[INFO] fetching crate pi_store 0.6.3...
[INFO] checking pi_store-0.6.3 against master#158f00a1c5175648af6f6099b075f78d1d014a28 for pr-121251
[INFO] extracting crate pi_store 0.6.3 into /workspace/builds/worker-4-tc1/source
[INFO] validating manifest of crates.io crate pi_store 0.6.3 on toolchain 158f00a1c5175648af6f6099b075f78d1d014a28
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate pi_store 0.6.3
[INFO] finished tweaking crates.io crate pi_store 0.6.3
[INFO] tweaked toml for crates.io crate pi_store 0.6.3 written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded fastcmp v1.0.1
[INFO] [stderr]   Downloaded pi-async-rt v0.1.18
[INFO] [stderr]   Downloaded pi_print_any v0.1.2
[INFO] [stderr]   Downloaded pi_handler v0.1.7
[INFO] [stderr]   Downloaded pi_timer v0.1.0
[INFO] [stderr]   Downloaded pi_futures v0.1.0
[INFO] [stderr]   Downloaded pi_slot_wheel v0.2.0
[INFO] [stderr]   Downloaded pi_gray v0.1.0
[INFO] [stderr]   Downloaded pi_cancel_timer v0.2.0
[INFO] [stderr]   Downloaded pi_wrr v0.1.1
[INFO] [stderr]   Downloaded pi_atom v0.5.0
[INFO] [stderr]   Downloaded pi_hash v0.1.1
[INFO] [stderr]   Downloaded pi_sinfo v0.2.1
[INFO] [stderr]   Downloaded pi_util v0.1.0
[INFO] [stderr]   Downloaded zigzag v0.1.0
[INFO] [stderr]   Downloaded pi_slot_deque v0.2.1
[INFO] [stderr]   Downloaded pi_guid v0.1.3
[INFO] [stderr]   Downloaded pi_hash_value v0.1.0
[INFO] [stderr]   Downloaded pi_ext_heap v0.1.1
[INFO] [stderr]   Downloaded pi_wheel v0.1.0
[INFO] [stderr]   Downloaded pi_ordmap v0.2.2
[INFO] [stderr]   Downloaded pi_bon v0.2.3
[INFO] [stderr]   Downloaded st3 v0.4.1
[INFO] [stderr]   Downloaded probabilistic-collections v0.7.0
[INFO] [stderr]   Downloaded pi_cache v0.3.2
[INFO] [stderr]   Downloaded pi_async_transaction v0.6.1
[INFO] [stderr]   Downloaded persy v1.4.7
[INFO] [stderr]   Downloaded quanta v0.12.2
[INFO] [stderr]   Downloaded raw-cpuid v11.0.1
[INFO] [stderr]   Downloaded pi_async_file v0.6.0
[INFO] [stderr]   Downloaded pi_share v0.4.15
[INFO] [stderr]   Downloaded pi_assets v0.13.5
[INFO] [stderr]   Downloaded pi_time v0.3.4
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 631137522b42ab4db05fdc457bb9913cb57deb9b6eac60085dcdc7c3875eead0
[INFO] running `Command { std: "docker" "start" "-a" "631137522b42ab4db05fdc457bb9913cb57deb9b6eac60085dcdc7c3875eead0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "631137522b42ab4db05fdc457bb9913cb57deb9b6eac60085dcdc7c3875eead0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "631137522b42ab4db05fdc457bb9913cb57deb9b6eac60085dcdc7c3875eead0", kill_on_drop: false }`
[INFO] [stdout] 631137522b42ab4db05fdc457bb9913cb57deb9b6eac60085dcdc7c3875eead0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+158f00a1c5175648af6f6099b075f78d1d014a28" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 01463f18d0363b9b2d991adccc45e5500d2b02e1f5f0953f9b885945c5ce3344
[INFO] running `Command { std: "docker" "start" "-a" "01463f18d0363b9b2d991adccc45e5500d2b02e1f5f0953f9b885945c5ce3344", kill_on_drop: false }`
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]     Checking getrandom v0.2.12
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking smallvec v1.13.1
[INFO] [stderr]     Checking futures-channel v0.3.30
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling num-bigint v0.4.4
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking parking_lot_core v0.9.9
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking bitflags v2.4.2
[INFO] [stderr]     Checking pi_ext_heap v0.1.1
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]     Checking parking v2.2.0
[INFO] [stderr]     Checking raw-cpuid v11.0.1
[INFO] [stderr]     Checking pi_slot_deque v0.2.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking concurrent-queue v2.4.0
[INFO] [stderr]     Checking pi_slot_wheel v0.2.0
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]     Checking pi_wheel v0.1.0
[INFO] [stderr]     Checking pi_share v0.4.15
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking pi_timer v0.1.0
[INFO] [stderr]     Checking pi_cancel_timer v0.2.0
[INFO] [stderr]     Checking backtrace v0.3.69
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking pi_hash v0.1.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.12
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking async-stream v0.3.5
[INFO] [stderr]     Checking crossbeam-queue v0.3.11
[INFO] [stderr]     Checking st3 v0.4.1
[INFO] [stderr]     Checking flume v0.11.0
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking quanta v0.12.2
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]    Compiling ctor v0.2.7
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking pi_wrr v0.1.1
[INFO] [stderr]     Checking smol_str v0.2.1
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking rand_xorshift v0.2.0
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]     Checking pin-project v1.1.4
[INFO] [stderr]     Checking unicode-normalization v0.1.23
[INFO] [stderr]     Checking event-listener v4.0.3
[INFO] [stderr]     Checking rayon v1.9.0
[INFO] [stderr]     Checking event-listener v5.2.0
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]    Compiling fastcmp v1.0.1
[INFO] [stderr]     Checking pi_print_any v0.1.2
[INFO] [stderr]     Checking regex-syntax v0.8.2
[INFO] [stderr]     Checking pi_bon v0.2.3
[INFO] [stderr]     Checking pi_gray v0.1.0
[INFO] [stderr]     Checking crc v3.0.1
[INFO] [stderr]     Checking futures-executor v0.3.30
[INFO] [stderr]     Checking pi_time v0.3.4
[INFO] [stderr]     Checking idna v0.5.0
[INFO] [stderr]     Checking futures v0.3.30
[INFO] [stderr]     Checking pi_atom v0.5.0
[INFO] [stderr]     Checking pi-async-rt v0.1.18
[INFO] [stderr]     Checking pi_guid v0.1.3
[INFO] [stderr]     Checking event-listener-strategy v0.5.0
[INFO] [stderr]     Checking event-listener-strategy v0.4.0
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking rustc-serialize v0.3.25
[INFO] [stderr]     Checking normpath v1.2.0
[INFO] [stderr]     Checking pi_futures v0.1.0
[INFO] [stderr]     Checking url v2.5.0
[INFO] [stderr]     Checking async-channel v2.2.0
[INFO] [stderr]     Checking thiserror v1.0.57
[INFO] [stderr]     Checking async-lock v3.3.0
[INFO] [stderr]     Checking pi_sinfo v0.2.1
[INFO] [stderr]     Checking pi_handler v0.1.7
[INFO] [stderr]     Checking zigzag v0.1.0
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking regex-automata v0.4.5
[INFO] [stderr]     Checking pi_util v0.1.0
[INFO] [stderr]     Checking pi_async_transaction v0.6.1
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking unsigned-varint v0.7.2
[INFO] [stderr]     Checking data-encoding v2.5.0
[INFO] [stderr]     Checking json v0.12.4
[INFO] [stderr]     Checking pi_ordmap v0.2.2
[INFO] [stderr]     Checking probabilistic-collections v0.7.0
[INFO] [stderr]     Checking sysinfo v0.29.11
[INFO] [stderr]     Checking pi_hash_value v0.1.0
[INFO] [stderr]     Checking persy v1.4.7
[INFO] [stderr]     Checking pi_cache v0.3.2
[INFO] [stderr]     Checking pi_assets v0.13.5
[INFO] [stderr]     Checking pi_async_file v0.6.0
[INFO] [stderr]     Checking pi_store v0.6.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/log_store/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:709:29
[INFO] [stdout]     |
[INFO] [stdout] 709 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 709 -                 let waits = (&mut *mutex);
[INFO] [stdout] 709 +                 let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:732:37
[INFO] [stdout]     |
[INFO] [stdout] 732 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 732 -                         let waits = (&mut *mutex);
[INFO] [stdout] 732 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:751:37
[INFO] [stdout]     |
[INFO] [stdout] 751 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 751 -                         let waits = (&mut *mutex);
[INFO] [stdout] 751 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:545:18
[INFO] [stdout]     |
[INFO] [stdout] 545 |             Some(mut i) => {
[INFO] [stdout]     |                  ----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:586:13
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 609 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `commit_block` is never read
[INFO] [stdout]    --> src/log_store/log_file.rs:655:17
[INFO] [stdout]     |
[INFO] [stdout] 655 |         let mut commit_block = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/log_store/log_file.rs:1051:31
[INFO] [stdout]      |
[INFO] [stdout] 1051 | ...                   mut remove_paths: Vec<PathBuf>,
[INFO] [stdout]      |                       ----^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:716:32
[INFO] [stdout]     |
[INFO] [stdout] 716 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[INFO] [stdout]     |                       ----^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `old_location` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1513:17
[INFO] [stdout]      |
[INFO] [stdout] 1513 |         let mut old_location = EMPTY_BLOCK; //默认旧的块位置为空块
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking regex v1.10.3
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/vpm/page_manager.rs:1333:9
[INFO] [stdout]      |
[INFO] [stdout] 1333 |     let mut locked = write_cmd_buffer
[INFO] [stdout]      |         ----^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:121:24
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:276:26
[INFO] [stdout]     |
[INFO] [stdout] 276 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:277:26
[INFO] [stdout]     |
[INFO] [stdout] 277 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:278:26
[INFO] [stdout]     |
[INFO] [stdout] 278 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:319:26
[INFO] [stdout]     |
[INFO] [stdout] 319 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:320:26
[INFO] [stdout]     |
[INFO] [stdout] 320 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:440:13
[INFO] [stdout]     |
[INFO] [stdout] 440 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut new_raw = Arc::into_raw(new) as *mut Node<K, V>;
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 |     let mut index = node.index(key);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:679:43
[INFO] [stdout]     |
[INFO] [stdout] 679 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[INFO] [stdout]     |                                           ----^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:723:25
[INFO] [stdout]     |
[INFO] [stdout] 723 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:798:29
[INFO] [stdout]     |
[INFO] [stdout] 798 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:62
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:47
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                               ----^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:974:25
[INFO] [stdout]     |
[INFO] [stdout] 974 |                         mut leaf: Arc<Leaf<K, V>>,
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1168:29
[INFO] [stdout]      |
[INFO] [stdout] 1168 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[INFO] [stdout]      |                       ----^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1183:27
[INFO] [stdout]      |
[INFO] [stdout] 1183 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:775:41
[INFO] [stdout]     |
[INFO] [stdout] 725 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 775 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:935:28
[INFO] [stdout]     |
[INFO] [stdout] 935 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:944:34
[INFO] [stdout]     |
[INFO] [stdout] 944 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]     |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:453:105
[INFO] [stdout]     |
[INFO] [stdout] 453 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:302:26
[INFO] [stdout]     |
[INFO] [stdout] 302 |     pub fn append(&self, mut delta: D) {
[INFO] [stdout]     |                          ----^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:332:29
[INFO] [stdout]     |
[INFO] [stdout] 332 |     pub fn follow_up(&self, mut delta: D) {
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:433:17
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let mut logger = self.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:331:17
[INFO] [stdout]     |
[INFO] [stdout] 331 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:298:34
[INFO] [stdout]     |
[INFO] [stdout] 298 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[INFO] [stdout]     |                                  ----^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1489:8
[INFO] [stdout]      |
[INFO] [stdout] 1473 | / impl<
[INFO] [stdout] 1474 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1475 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1476 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1489 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1544 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1561:5
[INFO] [stdout]      |
[INFO] [stdout] 1555 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1561 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1770:5
[INFO] [stdout]      |
[INFO] [stdout] 1769 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 1770 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1771 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1832:8
[INFO] [stdout]      |
[INFO] [stdout] 1784 | / impl<
[INFO] [stdout] 1785 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1786 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1787 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1832 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1842 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1984:5
[INFO] [stdout]      |
[INFO] [stdout] 1977 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1984 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1985 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2057:5
[INFO] [stdout]      |
[INFO] [stdout] 2052 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2057 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2081:5
[INFO] [stdout]      |
[INFO] [stdout] 2076 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2081 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2153:5
[INFO] [stdout]      |
[INFO] [stdout] 2148 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2153 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2365:5
[INFO] [stdout]      |
[INFO] [stdout] 2360 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2365 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2630:5
[INFO] [stdout]      |
[INFO] [stdout] 2625 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2630 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2840:5
[INFO] [stdout]      |
[INFO] [stdout] 2835 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2840 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3106:5
[INFO] [stdout]      |
[INFO] [stdout] 3101 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3106 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3125:8
[INFO] [stdout]      |
[INFO] [stdout] 3120 | / impl<
[INFO] [stdout] 3121 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3122 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3123 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3124 |       // 构建手动提交对树的修改
[INFO] [stdout] 3125 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1376:4
[INFO] [stdout]      |
[INFO] [stdout] 1376 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1388:4
[INFO] [stdout]      |
[INFO] [stdout] 1388 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sync_interval` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1077:5
[INFO] [stdout]      |
[INFO] [stdout] 1050 | struct InnerVirtualPageManager<
[INFO] [stdout]      |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     sync_interval:      usize,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `delay_timeout` are never read
[INFO] [stdout]    --> src/vpm/page_table.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 307 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- fields in this struct
[INFO] [stdout] 308 |     rt:                 MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     delay_timeout:      usize,                      //延迟刷新虚拟页表的时间，单位毫秒
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 152 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 153 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 154 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 155 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 156 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 158 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 159 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 160 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 161 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 163 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 164 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 165 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 166 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 167 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 168 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 169 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 170 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 172 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 174 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 175 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 176 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:736:5
[INFO] [stdout]     |
[INFO] [stdout] 736 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:813:5
[INFO] [stdout]     |
[INFO] [stdout] 813 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]     |     ^^^^^------------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1151:57
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                         ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout]      = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                            +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                        +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1180:61
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                             ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                                +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:502:9
[INFO] [stdout]     |
[INFO] [stdout] 502 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/log_store/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:709:29
[INFO] [stdout]     |
[INFO] [stdout] 709 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 709 -                 let waits = (&mut *mutex);
[INFO] [stdout] 709 +                 let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:732:37
[INFO] [stdout]     |
[INFO] [stdout] 732 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 732 -                         let waits = (&mut *mutex);
[INFO] [stdout] 732 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:751:37
[INFO] [stdout]     |
[INFO] [stdout] 751 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 751 -                         let waits = (&mut *mutex);
[INFO] [stdout] 751 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:545:18
[INFO] [stdout]     |
[INFO] [stdout] 545 |             Some(mut i) => {
[INFO] [stdout]     |                  ----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:586:13
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 609 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `commit_block` is never read
[INFO] [stdout]    --> src/log_store/log_file.rs:655:17
[INFO] [stdout]     |
[INFO] [stdout] 655 |         let mut commit_block = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `lmdb`
[INFO] [stdout]  --> tests/test_lmdb.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | extern crate lmdb;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `pi_db`
[INFO] [stdout]  --> tests/test_lmdb.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | extern crate pi_db;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `r#async`
[INFO] [stdout]   --> benches/bench_persy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use r#async::rt::multi_thread::MultiTaskRuntimeBuilder;
[INFO] [stdout]    |     ^^^^^^^ use of undeclared crate or module `r#async`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> benches/bench_persy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> benches/bench_persy.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bounded`
[INFO] [stdout]  --> benches/bench_persy.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crossbeam_channel::{unbounded, bounded};
[INFO] [stdout]   |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]   --> benches/bench_persy.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToSegmentId`
[INFO] [stdout]   --> benches/bench_persy.rs:11:48
[INFO] [stdout]    |
[INFO] [stdout] 11 | use persy::{Config, Persy, ValueMode, PersyId, ToSegmentId};
[INFO] [stdout]    |                                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `atom`
[INFO] [stdout]  --> tests/test_lmdb.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | extern crate atom;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `bon`
[INFO] [stdout]  --> tests/test_lmdb.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | extern crate bon;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `guid`
[INFO] [stdout]  --> tests/test_lmdb.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | extern crate guid;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `sinfo`
[INFO] [stdout]  --> tests/test_lmdb.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | extern crate sinfo;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> tests/test_devices.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_channel::unbounded`
[INFO] [stdout]  --> tests/test_devices.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crossbeam_channel::unbounded;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRefGuard`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:3:53
[INFO] [stdout]   |
[INFO] [stdout] 3 | use pi_store::free_lock::b_plus_tree::{CowBtreeMap, KeyRefGuard, KeyIterator, KVPairIterator};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> benches/bench_b_plus_tree.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRefGuard`
[INFO] [stdout]  --> benches/bench_b_plus_tree.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use pi_store::free_lock::b_plus_tree::{CowBtreeMap, KeyRefGuard, KeyIterator, KVPairIterator};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error; 5 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (bench "bench_persy") due to 2 previous errors; 5 warnings emitted
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0432]: unresolved import `pi_store::lmdb_file`
[INFO] [stdout]   --> tests/test_lmdb.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 | use pi_store::lmdb_file::DB;
[INFO] [stdout]    |               ^^^^^^^^^ could not find `lmdb_file` in `pi_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> tests/test_lmdb.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> tests/test_lmdb.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time`
[INFO] [stdout]   --> tests/test_lmdb.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::time;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> tests/test_log_file.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{BTreeMap, VecDeque};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]  --> tests/test_log_file.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_lock::Mutex`
[INFO] [stdout]  --> tests/test_log_file.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_lock::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MultiTaskRuntime`
[INFO] [stdout]   --> tests/test_log_file.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 |                       multi_thread::{MultiTaskRuntime, MultiTaskRuntimeBuilder}};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_log_file_block`, `read_log_file`
[INFO] [stdout]   --> tests/test_log_file.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     read_log_file, read_log_file_block, LogFile, LogMethod, PairLoader,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]   --> tests/test_log_file.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::ErrorKind;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/log_store/log_file.rs:1051:31
[INFO] [stdout]      |
[INFO] [stdout] 1051 | ...                   mut remove_paths: Vec<PathBuf>,
[INFO] [stdout]      |                       ----^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |     thread::sleep_ms(1000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:201:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:240:13
[INFO] [stdout]     |
[INFO] [stdout] 240 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:258:13
[INFO] [stdout]     |
[INFO] [stdout] 258 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `spawn` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout] 16  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |     ---^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors; 11 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0463.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `alloc` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:16:17
[INFO] [stdout]     |
[INFO] [stdout] 16  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |                 ^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:630:8
[INFO] [stdout]     |
[INFO] [stdout] 630 |     fn alloc<R: 'static>(&self) -> TaskId;
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> tests/test_vpm.rs:94:22
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(AsyncRuntime::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                      ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(<dyn AsyncRuntime>::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                      ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_lmdb") due to 8 previous errors; 11 warnings emitted
[INFO] [stdout] error[E0599]: no method named `spawn` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:52:8
[INFO] [stdout]     |
[INFO] [stdout] 52  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |     ---^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `alloc` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:52:17
[INFO] [stdout]     |
[INFO] [stdout] 52  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |                 ^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:630:8
[INFO] [stdout]     |
[INFO] [stdout] 630 |     fn alloc<R: 'static>(&self) -> TaskId;
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]   --> tests/test_vpm.rs:94:36
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(AsyncRuntime::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                                    ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors; 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:96:14
[INFO] [stdout]     |
[INFO] [stdout] 96  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/test_vpm.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |             if let Some(buf) = mgr.insert(index, TestBin(Arc::new(vec![index as u8]))) {
[INFO] [stdout]    |                    ^^^^^^^^^   ------------------------------------------------------- this expression has type `Result<Arc<pi_assets::asset::Droper<TestBin>>, TestBin>`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected `Result<Arc<Droper<TestBin>>, ...>`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Result<Arc<pi_assets::asset::Droper<TestBin>>, TestBin>`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:96:8
[INFO] [stdout]     |
[INFO] [stdout] 96  |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 97  | ||         for index in 0..10 {
[INFO] [stdout] 98  | ||             if let Some(buf) = mgr.insert(index, TestBin(Arc::new(vec![index as u8]))) {
[INFO] [stdout] 99  | ||                 println!("!!!!!!load ok, index: {:?}, buf: {:?}", index, buf.0.as_slice());
[INFO] [stdout] 100 | ||             }
[INFO] [stdout] 101 | ||         }
[INFO] [stdout] 102 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:96:26: 102:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout] 113 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_devices") due to 5 previous errors; 2 warnings emitted
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:136:23
[INFO] [stdout]     |
[INFO] [stdout] 136 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:136:17
[INFO] [stdout]     |
[INFO] [stdout] 136 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 137 | ||             for index in location..location + 1000 {
[INFO] [stdout] 138 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 139 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 145 | ||             sender0.send(Some(()));
[INFO] [stdout] 146 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:136:40: 146:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:149:23
[INFO] [stdout]     |
[INFO] [stdout] 149 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 150 | ||             for index in location + 1000..location + 2000 {
[INFO] [stdout] 151 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 152 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 158 | ||             sender1.send(Some(()));
[INFO] [stdout] 159 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:149:40: 159:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 163 | ||             for index in location + 2000..location + 3000 {
[INFO] [stdout] 164 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 165 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 171 | ||             sender2.send(Some(()));
[INFO] [stdout] 172 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:162:40: 172:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:175:17
[INFO] [stdout]     |
[INFO] [stdout] 175 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 176 | ||             for index in location + 3000..location + 4000 {
[INFO] [stdout] 177 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 178 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 184 | ||             sender3.send(Some(()));
[INFO] [stdout] 185 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:175:40: 185:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:188:23
[INFO] [stdout]     |
[INFO] [stdout] 188 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:188:17
[INFO] [stdout]     |
[INFO] [stdout] 188 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 189 | ||             for index in location + 4000..location + 5000 {
[INFO] [stdout] 190 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 191 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 197 | ||             sender4.send(Some(()));
[INFO] [stdout] 198 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:188:40: 198:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:201:23
[INFO] [stdout]     |
[INFO] [stdout] 201 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 202 | ||             for index in location + 5000..location + 6000 {
[INFO] [stdout] 203 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 204 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 210 | ||             sender5.send(Some(()));
[INFO] [stdout] 211 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:201:40: 211:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:214:23
[INFO] [stdout]     |
[INFO] [stdout] 214 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:214:17
[INFO] [stdout]     |
[INFO] [stdout] 214 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 215 | ||             for index in location + 6000..location + 7000 {
[INFO] [stdout] 216 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 217 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 223 | ||             sender6.send(Some(()));
[INFO] [stdout] 224 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:214:40: 224:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:227:23
[INFO] [stdout]     |
[INFO] [stdout] 227 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:227:17
[INFO] [stdout]     |
[INFO] [stdout] 227 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 228 | ||             for index in location + 7000..location + 8000 {
[INFO] [stdout] 229 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 230 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 236 | ||             sender7.send(Some(()));
[INFO] [stdout] 237 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:227:40: 237:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 114 | ||         let page_table = VirtualPageTable::new(rt_copy.clone(), "./page_table", 1, 32 * 1024 * 1024, 8192, true, 1).await;
[INFO] [stdout] 115 | ||         let current_page_uid = page_table.current_page_uid() as u128;
[INFO] [stdout] 116 | ||         println!("!!!!!!current page uid: {}", current_page_uid);
[INFO] [stdout] ...   ||
[INFO] [stdout] 265 | ||         println!("!!!!!!flush ok, time: {:?}", now.elapsed());
[INFO] [stdout] 266 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:113:26: 266:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:446:14
[INFO] [stdout]     |
[INFO] [stdout] 446 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:471:30
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:471:44
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:446:8
[INFO] [stdout]     |
[INFO] [stdout] 446 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 447 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 448 | ||                                               "./device/0.simple",
[INFO] [stdout] 449 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 499 | ||         }
[INFO] [stdout] 500 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:446:26: 500:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:81:25
[INFO] [stdout]    |
[INFO] [stdout] 81 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:83:25
[INFO] [stdout]    |
[INFO] [stdout] 83 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:84:25
[INFO] [stdout]    |
[INFO] [stdout] 84 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:85:25
[INFO] [stdout]    |
[INFO] [stdout] 85 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:520:14
[INFO] [stdout]     |
[INFO] [stdout] 520 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:545:30
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:545:44
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:520:8
[INFO] [stdout]     |
[INFO] [stdout] 520 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 521 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 522 | ||                                               "./device/0.simple",
[INFO] [stdout] 523 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 559 | ||         println!("!!!!!!loaded finish, count: {}", count);
[INFO] [stdout] 560 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:520:26: 560:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:580:14
[INFO] [stdout]     |
[INFO] [stdout] 580 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:605:30
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:605:44
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:622:31
[INFO] [stdout]     |
[INFO] [stdout] 622 |                 rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                         ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:622:25
[INFO] [stdout]     |
[INFO] [stdout] 622 |                    rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 623 | ||                     match page_manager_copy.write_through(cmd, None).await {
[INFO] [stdout] 624 | ||                         Err(e) => {
[INFO] [stdout] 625 | ||                             panic!("Write through failed, reason: {:?}", e);
[INFO] [stdout] ...   ||
[INFO] [stdout] 630 | ||                     }
[INFO] [stdout] 631 | ||                 });
[INFO] [stdout]     | ||                 -
[INFO] [stdout]     | ||_________________|
[INFO] [stdout]     |  |_________________unexpected argument of type `{async block@tests/test_vpm.rs:622:48: 631:18}`
[INFO] [stdout]     |                    help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:580:8
[INFO] [stdout]     |
[INFO] [stdout] 580 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 581 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 582 | ||                                               "./device/0.simple",
[INFO] [stdout] 583 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 633 | ||         }
[INFO] [stdout] 634 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:580:26: 634:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VirtualPageCachingStrategy`
[INFO] [stdout]   --> tests/test_vpm.rs:27:34
[INFO] [stdout]    |
[INFO] [stdout] 27 |                      page_pool::{VirtualPageCachingStrategy,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_channel::internal::SelectHandle`
[INFO] [stdout]   --> tests/test_vpm.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crossbeam_channel::internal::SelectHandle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:265:26
[INFO] [stdout]     |
[INFO] [stdout] 265 |     fn is_require(&self, log_file: Option<&PathBuf>, key: &Vec<u8>) -> bool {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:271:9
[INFO] [stdout]     |
[INFO] [stdout] 271 |         log_file: Option<&PathBuf>,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let mut index = 999;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 33 previous errors; 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0308, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_vpm") due to 34 previous errors; 6 warnings emitted
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut iterator = map.keys(None, false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |     let mut iterator = map.keys(Some(&0), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:447:9
[INFO] [stdout]     |
[INFO] [stdout] 447 |     let mut iterator = map.keys(Some(&700), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut iterator = map.keys(Some(&999), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:501:9
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let mut iterator = map.keys(Some(&-1), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:502:35
[INFO] [stdout]     |
[INFO] [stdout] 502 |     if let KeyIterator::Ascending(mut keys) = iterator {
[INFO] [stdout]     |                                   ----^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:515:9
[INFO] [stdout]     |
[INFO] [stdout] 515 |     let mut iterator = map.keys(Some(&1500), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:516:35
[INFO] [stdout]     |
[INFO] [stdout] 516 |     if let KeyIterator::Ascending(mut keys) = iterator {
[INFO] [stdout]     |                                   ----^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:526:9
[INFO] [stdout]     |
[INFO] [stdout] 526 |     let mut iterator = map.keys(Some(&3000), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_log_file.rs:618:21
[INFO] [stdout]     |
[INFO] [stdout] 618 |                 let mut count = Arc::new(AtomicUsize::new(0));
[INFO] [stdout]     |                     ----^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:716:32
[INFO] [stdout]     |
[INFO] [stdout] 716 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[INFO] [stdout]     |                       ----^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:554:9
[INFO] [stdout]     |
[INFO] [stdout] 554 |     let mut iterator = map.keys(None, true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:584:9
[INFO] [stdout]     |
[INFO] [stdout] 584 |     let mut iterator = map.keys(Some(&0), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:609:9
[INFO] [stdout]     |
[INFO] [stdout] 609 |     let mut iterator = map.keys(Some(&700), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:639:9
[INFO] [stdout]     |
[INFO] [stdout] 639 |     let mut iterator = map.keys(Some(&999), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:640:36
[INFO] [stdout]     |
[INFO] [stdout] 640 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |     let mut iterator = map.keys(Some(&-1), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:686:9
[INFO] [stdout]     |
[INFO] [stdout] 686 |     let mut iterator = map.keys(Some(&1500), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:687:36
[INFO] [stdout]     |
[INFO] [stdout] 687 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:697:9
[INFO] [stdout]     |
[INFO] [stdout] 697 |     let mut iterator = map.keys(Some(&3000), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:698:36
[INFO] [stdout]     |
[INFO] [stdout] 698 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:729:9
[INFO] [stdout]     |
[INFO] [stdout] 729 |     let mut iterator = map.values(None, false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:756:9
[INFO] [stdout]     |
[INFO] [stdout] 756 |     let mut iterator = map.values(Some(&0), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 784 |     let mut iterator = map.values(Some(&700), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:811:9
[INFO] [stdout]     |
[INFO] [stdout] 811 |     let mut iterator = map.values(Some(&999), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:839:9
[INFO] [stdout]     |
[INFO] [stdout] 839 |     let mut iterator = map.values(Some(&-1), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:840:38
[INFO] [stdout]     |
[INFO] [stdout] 840 |     if let KVPairIterator::Ascending(mut values) = iterator {
[INFO] [stdout]     |                                      ----^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:854:9
[INFO] [stdout]     |
[INFO] [stdout] 854 |     let mut iterator = map.values(Some(&1500), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:855:38
[INFO] [stdout]     |
[INFO] [stdout] 855 |     if let KVPairIterator::Ascending(mut values) = iterator {
[INFO] [stdout]     |                                      ----^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:866:9
[INFO] [stdout]     |
[INFO] [stdout] 866 |     let mut iterator = map.values(Some(&3000), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:894:9
[INFO] [stdout]     |
[INFO] [stdout] 894 |     let mut iterator = map.values(None, true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:925:9
[INFO] [stdout]     |
[INFO] [stdout] 925 |     let mut iterator = map.values(Some(&0), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 |     let mut iterator = map.values(Some(&700), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:981:9
[INFO] [stdout]     |
[INFO] [stdout] 981 |     let mut iterator = map.values(Some(&999), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:982:39
[INFO] [stdout]     |
[INFO] [stdout] 982 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]     |                                       ----^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1023:9
[INFO] [stdout]      |
[INFO] [stdout] 1023 |     let mut iterator = map.values(Some(&-1), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1029:9
[INFO] [stdout]      |
[INFO] [stdout] 1029 |     let mut iterator = map.values(Some(&1500), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1030:39
[INFO] [stdout]      |
[INFO] [stdout] 1030 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]      |                                       ----^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1041:9
[INFO] [stdout]      |
[INFO] [stdout] 1041 |     let mut iterator = map.values(Some(&3000), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1042:39
[INFO] [stdout]      |
[INFO] [stdout] 1042 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]      |                                       ----^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 15 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:317:13
[INFO] [stdout]     |
[INFO] [stdout] 317 |             map.upsert(index, index * 1000, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 317 |             let _ = map.upsert(index, index * 1000, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:355:13
[INFO] [stdout]     |
[INFO] [stdout] 355 |             map.upsert(index, index, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 355 |             let _ = map.upsert(index, index, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `old_location` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1513:17
[INFO] [stdout]      |
[INFO] [stdout] 1513 |         let mut old_location = EMPTY_BLOCK; //默认旧的块位置为空块
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 43 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/vpm/page_manager.rs:1333:9
[INFO] [stdout]      |
[INFO] [stdout] 1333 |     let mut locked = write_cmd_buffer
[INFO] [stdout]      |         ----^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:121:24
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:276:26
[INFO] [stdout]     |
[INFO] [stdout] 276 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:277:26
[INFO] [stdout]     |
[INFO] [stdout] 277 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:278:26
[INFO] [stdout]     |
[INFO] [stdout] 278 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:319:26
[INFO] [stdout]     |
[INFO] [stdout] 319 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:320:26
[INFO] [stdout]     |
[INFO] [stdout] 320 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:440:13
[INFO] [stdout]     |
[INFO] [stdout] 440 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut new_raw = Arc::into_raw(new) as *mut Node<K, V>;
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 |     let mut index = node.index(key);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:679:43
[INFO] [stdout]     |
[INFO] [stdout] 679 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[INFO] [stdout]     |                                           ----^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:723:25
[INFO] [stdout]     |
[INFO] [stdout] 723 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:798:29
[INFO] [stdout]     |
[INFO] [stdout] 798 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:62
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:47
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                               ----^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:974:25
[INFO] [stdout]     |
[INFO] [stdout] 974 |                         mut leaf: Arc<Leaf<K, V>>,
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1168:29
[INFO] [stdout]      |
[INFO] [stdout] 1168 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[INFO] [stdout]      |                       ----^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1183:27
[INFO] [stdout]      |
[INFO] [stdout] 1183 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:775:41
[INFO] [stdout]     |
[INFO] [stdout] 725 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 775 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:935:28
[INFO] [stdout]     |
[INFO] [stdout] 935 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:944:34
[INFO] [stdout]     |
[INFO] [stdout] 944 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]     |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:453:105
[INFO] [stdout]     |
[INFO] [stdout] 453 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:302:26
[INFO] [stdout]     |
[INFO] [stdout] 302 |     pub fn append(&self, mut delta: D) {
[INFO] [stdout]     |                          ----^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:332:29
[INFO] [stdout]     |
[INFO] [stdout] 332 |     pub fn follow_up(&self, mut delta: D) {
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:433:17
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let mut logger = self.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:331:17
[INFO] [stdout]     |
[INFO] [stdout] 331 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:298:34
[INFO] [stdout]     |
[INFO] [stdout] 298 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[INFO] [stdout]     |                                  ----^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1489:8
[INFO] [stdout]      |
[INFO] [stdout] 1473 | / impl<
[INFO] [stdout] 1474 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1475 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1476 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1489 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1544 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1561:5
[INFO] [stdout]      |
[INFO] [stdout] 1555 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1561 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1770:5
[INFO] [stdout]      |
[INFO] [stdout] 1769 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 1770 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1771 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1832:8
[INFO] [stdout]      |
[INFO] [stdout] 1784 | / impl<
[INFO] [stdout] 1785 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1786 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1787 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1832 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1842 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1984:5
[INFO] [stdout]      |
[INFO] [stdout] 1977 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1984 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1985 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2057:5
[INFO] [stdout]      |
[INFO] [stdout] 2052 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2057 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2081:5
[INFO] [stdout]      |
[INFO] [stdout] 2076 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2081 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2153:5
[INFO] [stdout]      |
[INFO] [stdout] 2148 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2153 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2365:5
[INFO] [stdout]      |
[INFO] [stdout] 2360 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2365 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2630:5
[INFO] [stdout]      |
[INFO] [stdout] 2625 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2630 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2840:5
[INFO] [stdout]      |
[INFO] [stdout] 2835 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2840 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3106:5
[INFO] [stdout]      |
[INFO] [stdout] 3101 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3106 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3125:8
[INFO] [stdout]      |
[INFO] [stdout] 3120 | / impl<
[INFO] [stdout] 3121 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3122 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3123 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3124 |       // 构建手动提交对树的修改
[INFO] [stdout] 3125 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1376:4
[INFO] [stdout]      |
[INFO] [stdout] 1376 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1388:4
[INFO] [stdout]      |
[INFO] [stdout] 1388 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sync_interval` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1077:5
[INFO] [stdout]      |
[INFO] [stdout] 1050 | struct InnerVirtualPageManager<
[INFO] [stdout]      |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     sync_interval:      usize,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `delay_timeout` are never read
[INFO] [stdout]    --> src/vpm/page_table.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 307 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- fields in this struct
[INFO] [stdout] 308 |     rt:                 MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     delay_timeout:      usize,                      //延迟刷新虚拟页表的时间，单位毫秒
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 152 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 153 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 154 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 155 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 156 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 158 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 159 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 160 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 161 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 163 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 164 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 165 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 166 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 167 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 168 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 169 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 170 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 172 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 174 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 175 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 176 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:736:5
[INFO] [stdout]     |
[INFO] [stdout] 736 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:813:5
[INFO] [stdout]     |
[INFO] [stdout] 813 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]     |     ^^^^^------------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1151:57
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                         ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout]      = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                            +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                        +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1180:61
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                             ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                                +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:502:9
[INFO] [stdout]     |
[INFO] [stdout] 502 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 73 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "01463f18d0363b9b2d991adccc45e5500d2b02e1f5f0953f9b885945c5ce3344", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "01463f18d0363b9b2d991adccc45e5500d2b02e1f5f0953f9b885945c5ce3344", kill_on_drop: false }`
[INFO] [stdout] 01463f18d0363b9b2d991adccc45e5500d2b02e1f5f0953f9b885945c5ce3344
[INFO] checking pi_store-0.6.3 against try#b4fc5dbf0bc33be331f9d893db5b3a794f29724a+rustflags=-Dexplicit_range -Dtrait_impl_range -Wrange_syntax -Wrange_bounds for pr-121251
[INFO] extracting crate pi_store 0.6.3 into /workspace/builds/worker-4-tc2/source
[INFO] validating manifest of crates.io crate pi_store 0.6.3 on toolchain b4fc5dbf0bc33be331f9d893db5b3a794f29724a
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b4fc5dbf0bc33be331f9d893db5b3a794f29724a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking crates.io crate pi_store 0.6.3
[INFO] finished tweaking crates.io crate pi_store 0.6.3
[INFO] tweaked toml for crates.io crate pi_store 0.6.3 written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b4fc5dbf0bc33be331f9d893db5b3a794f29724a" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b4fc5dbf0bc33be331f9d893db5b3a794f29724a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+b4fc5dbf0bc33be331f9d893db5b3a794f29724a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8af7f75845eba12924e7baf0964b67ae3bac76749076efcf3a62297d44177780
[INFO] running `Command { std: "docker" "start" "-a" "8af7f75845eba12924e7baf0964b67ae3bac76749076efcf3a62297d44177780", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8af7f75845eba12924e7baf0964b67ae3bac76749076efcf3a62297d44177780", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8af7f75845eba12924e7baf0964b67ae3bac76749076efcf3a62297d44177780", kill_on_drop: false }`
[INFO] [stdout] 8af7f75845eba12924e7baf0964b67ae3bac76749076efcf3a62297d44177780
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dexplicit_range -Dtrait_impl_range -Wrange_syntax -Wrange_bounds" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:2788e3201cd34a07e3172128adcd8b3090168a8e3bcc40d7c032b9dda1df7d1c" "/opt/rustwide/cargo-home/bin/cargo" "+b4fc5dbf0bc33be331f9d893db5b3a794f29724a" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] b5a938277fb59d3dfa4e998d94eaab75d1d34b426c2f2255c53e94a71dea914a
[INFO] running `Command { std: "docker" "start" "-a" "b5a938277fb59d3dfa4e998d94eaab75d1d34b426c2f2255c53e94a71dea914a", kill_on_drop: false }`
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]    Compiling num-traits v0.2.18
[INFO] [stderr]     Checking getrandom v0.2.12
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking smallvec v1.13.1
[INFO] [stderr]     Checking futures-channel v0.3.30
[INFO] [stderr]     Checking getrandom v0.1.16
[INFO] [stderr]    Compiling num-bigint v0.4.4
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking futures-util v0.3.30
[INFO] [stderr]     Checking parking_lot_core v0.9.9
[INFO] [stderr]     Checking fxhash v0.2.1
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking nanorand v0.7.0
[INFO] [stderr]     Checking rand_core v0.5.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking spin v0.9.8
[INFO] [stderr]     Checking bitflags v2.4.2
[INFO] [stderr]    Compiling serde v1.0.197
[INFO] [stderr]     Checking parking v2.2.0
[INFO] [stderr]     Checking pi_ext_heap v0.1.1
[INFO] [stderr]     Checking raw-cpuid v11.0.1
[INFO] [stderr]     Checking pi_slot_deque v0.2.1
[INFO] [stderr]    Compiling async-stream-impl v0.3.5
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking concurrent-queue v2.4.0
[INFO] [stderr]     Checking pi_slot_wheel v0.2.0
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]     Checking pi_share v0.4.15
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking pi_wheel v0.1.0
[INFO] [stderr]     Checking pi_timer v0.1.0
[INFO] [stderr]     Checking pi_cancel_timer v0.2.0
[INFO] [stderr]     Checking backtrace v0.3.69
[INFO] [stderr]     Checking num-integer v0.1.46
[INFO] [stderr]     Checking pi_hash v0.1.1
[INFO] [stderr]     Checking st3 v0.4.1
[INFO] [stderr]     Checking dashmap v5.5.3
[INFO] [stderr]     Checking crossbeam-channel v0.5.12
[INFO] [stderr]     Checking async-stream v0.3.5
[INFO] [stderr]     Checking crossbeam-queue v0.3.11
[INFO] [stderr]     Checking flume v0.11.0
[INFO] [stderr]     Checking rand_chacha v0.2.2
[INFO] [stderr]     Checking quanta v0.12.2
[INFO] [stderr]     Checking parking_lot v0.12.1
[INFO] [stderr]    Compiling ctor v0.2.7
[INFO] [stderr]     Checking num_cpus v1.16.0
[INFO] [stderr]     Checking smol_str v0.2.1
[INFO] [stderr]     Checking pi_wrr v0.1.1
[INFO] [stderr]     Checking rand v0.7.3
[INFO] [stderr]     Checking rand_xorshift v0.2.0
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]     Checking pin-project v1.1.4
[INFO] [stderr]     Checking unicode-normalization v0.1.23
[INFO] [stderr]     Checking event-listener v5.2.0
[INFO] [stderr]     Checking rayon v1.9.0
[INFO] [stderr]     Checking event-listener v4.0.3
[INFO] [stderr]     Checking regex-syntax v0.8.2
[INFO] [stderr]     Checking crc-catalog v2.4.0
[INFO] [stderr]     Checking pi_bon v0.2.3
[INFO] [stderr]    Compiling fastcmp v1.0.1
[INFO] [stderr]     Checking pi_time v0.3.4
[INFO] [stderr]     Checking pi_print_any v0.1.2
[INFO] [stderr]     Checking pi_gray v0.1.0
[INFO] [stderr]     Checking pi_guid v0.1.3
[INFO] [stderr]     Checking crc v3.0.1
[INFO] [stderr]     Checking pi_atom v0.5.0
[INFO] [stderr]     Checking idna v0.5.0
[INFO] [stderr]     Checking event-listener-strategy v0.4.0
[INFO] [stderr]     Checking event-listener-strategy v0.5.0
[INFO] [stderr]     Checking flume v0.10.14
[INFO] [stderr]     Checking futures-executor v0.3.30
[INFO] [stderr]     Checking normpath v1.2.0
[INFO] [stderr]     Checking rustc-serialize v0.3.25
[INFO] [stderr]     Checking futures v0.3.30
[INFO] [stderr]     Checking pi_futures v0.1.0
[INFO] [stderr]     Checking pi-async-rt v0.1.18
[INFO] [stderr]     Checking pi_handler v0.1.7
[INFO] [stderr]     Checking url v2.5.0
[INFO] [stderr]     Checking thiserror v1.0.57
[INFO] [stderr]     Checking async-channel v2.2.0
[INFO] [stderr]     Checking async-lock v3.3.0
[INFO] [stderr]     Checking pi_sinfo v0.2.1
[INFO] [stderr]     Checking regex-automata v0.4.5
[INFO] [stderr]     Checking zigzag v0.1.0
[INFO] [stderr]     Checking pi_util v0.1.0
[INFO] [stderr]     Checking bincode v1.3.3
[INFO] [stderr]     Checking fs2 v0.4.3
[INFO] [stderr]     Checking atty v0.2.14
[INFO] [stderr]     Checking linked-hash-map v0.5.6
[INFO] [stderr]     Checking json v0.12.4
[INFO] [stderr]     Checking pi_ordmap v0.2.2
[INFO] [stderr]     Checking pi_async_transaction v0.6.1
[INFO] [stderr]     Checking humantime v2.1.0
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking data-encoding v2.5.0
[INFO] [stderr]     Checking sysinfo v0.29.11
[INFO] [stderr]     Checking pi_hash_value v0.1.0
[INFO] [stderr]     Checking probabilistic-collections v0.7.0
[INFO] [stderr]     Checking unsigned-varint v0.7.2
[INFO] [stderr]     Checking persy v1.4.7
[INFO] [stderr]     Checking pi_cache v0.3.2
[INFO] [stderr]     Checking pi_async_file v0.6.0
[INFO] [stderr]     Checking pi_assets v0.13.5
[INFO] [stderr]     Checking pi_store v0.6.3 (/opt/rustwide/workdir)
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3159:14
[INFO] [stdout]      |
[INFO] [stdout] 3159 |     for _ in 0..(1 << len) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/log_store/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:264:28
[INFO] [stdout]     |
[INFO] [stdout] 264 |         hasher.update(&buf[offset..]);
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:317:24
[INFO] [stdout]     |
[INFO] [stdout] 317 |     hasher.update(&buf[buf.len() - 8..]);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:540:30
[INFO] [stdout]     |
[INFO] [stdout] 540 |                 for index in 0..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:549:34
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     for index in 0..len {
[INFO] [stdout]     |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:555:34
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     for index in 0..(i + 1) {
[INFO] [stdout]     |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:612:30
[INFO] [stdout]     |
[INFO] [stdout] 612 |                 for index in 0..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:617:30
[INFO] [stdout]     |
[INFO] [stdout] 617 |                 for index in i..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:709:29
[INFO] [stdout]     |
[INFO] [stdout] 709 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 709 -                 let waits = (&mut *mutex);
[INFO] [stdout] 709 +                 let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:732:37
[INFO] [stdout]     |
[INFO] [stdout] 732 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 732 -                         let waits = (&mut *mutex);
[INFO] [stdout] 732 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:751:37
[INFO] [stdout]     |
[INFO] [stdout] 751 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 751 -                         let waits = (&mut *mutex);
[INFO] [stdout] 751 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:955:30
[INFO] [stdout]     |
[INFO] [stdout] 955 |                 for index in 0..readable_len {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1324:22
[INFO] [stdout]      |
[INFO] [stdout] 1324 |             for _ in 0..log_paths.len() {
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1676:28
[INFO] [stdout]      |
[INFO] [stdout] 1676 |     let head_bin_len = bin[0..header_offset as usize].len();
[INFO] [stdout]      |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1679:22
[INFO] [stdout]      |
[INFO] [stdout] 1679 |     let bytes = &bin[header_offset as usize..header_offset as usize + DEFAULT_LOG_BLOCK_HEADER_LEN];
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1727:22
[INFO] [stdout]      |
[INFO] [stdout] 1727 |     let bytes = &bin[payload_offset as usize..payload_offset as usize + payload_len as usize];
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1880:56
[INFO] [stdout]      |
[INFO] [stdout] 1880 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1893:56
[INFO] [stdout]      |
[INFO] [stdout] 1893 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1980:56
[INFO] [stdout]      |
[INFO] [stdout] 1980 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1993:56
[INFO] [stdout]      |
[INFO] [stdout] 1993 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:325:22
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let bytes = &bin[payload_offset as usize..payload_offset as usize + payload_len as usize];
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:402:28
[INFO] [stdout]     |
[INFO] [stdout] 402 |     let head_bin_len = bin[0..header_offset as usize].len();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:405:22
[INFO] [stdout]     |
[INFO] [stdout] 405 |     let bytes = &bin[header_offset as usize..header_offset as usize + DEFAULT_LOG_BLOCK_HEADER_LEN];
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/devices/simple_device.rs:571:18
[INFO] [stdout]     |
[INFO] [stdout] 571 |         for _ in 0..8 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/devices/simple_device.rs:669:24
[INFO] [stdout]     |
[INFO] [stdout] 669 |     let payload = &buf[DEFAULT_BLOCK_HEAD_LEN..DEFAULT_BLOCK_HEAD_LEN + len];
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:545:18
[INFO] [stdout]     |
[INFO] [stdout] 545 |             Some(mut i) => {
[INFO] [stdout]     |                  ----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:586:13
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 609 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `commit_block` is never read
[INFO] [stdout]    --> src/log_store/log_file.rs:655:17
[INFO] [stdout]     |
[INFO] [stdout] 655 |         let mut commit_block = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking regex v1.10.3
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/log_store/log_file.rs:1051:31
[INFO] [stdout]      |
[INFO] [stdout] 1051 | ...                   mut remove_paths: Vec<PathBuf>,
[INFO] [stdout]      |                       ----^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:716:32
[INFO] [stdout]     |
[INFO] [stdout] 716 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[INFO] [stdout]     |                       ----^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `old_location` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1513:17
[INFO] [stdout]      |
[INFO] [stdout] 1513 |         let mut old_location = EMPTY_BLOCK; //默认旧的块位置为空块
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Checking env_logger v0.9.3
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/vpm/page_manager.rs:1333:9
[INFO] [stdout]      |
[INFO] [stdout] 1333 |     let mut locked = write_cmd_buffer
[INFO] [stdout]      |         ----^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:121:24
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:276:26
[INFO] [stdout]     |
[INFO] [stdout] 276 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:277:26
[INFO] [stdout]     |
[INFO] [stdout] 277 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:278:26
[INFO] [stdout]     |
[INFO] [stdout] 278 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:319:26
[INFO] [stdout]     |
[INFO] [stdout] 319 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:320:26
[INFO] [stdout]     |
[INFO] [stdout] 320 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:440:13
[INFO] [stdout]     |
[INFO] [stdout] 440 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut new_raw = Arc::into_raw(new) as *mut Node<K, V>;
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 |     let mut index = node.index(key);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:679:43
[INFO] [stdout]     |
[INFO] [stdout] 679 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[INFO] [stdout]     |                                           ----^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:723:25
[INFO] [stdout]     |
[INFO] [stdout] 723 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:798:29
[INFO] [stdout]     |
[INFO] [stdout] 798 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:62
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:47
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                               ----^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:974:25
[INFO] [stdout]     |
[INFO] [stdout] 974 |                         mut leaf: Arc<Leaf<K, V>>,
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1168:29
[INFO] [stdout]      |
[INFO] [stdout] 1168 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[INFO] [stdout]      |                       ----^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1183:27
[INFO] [stdout]      |
[INFO] [stdout] 1183 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:775:41
[INFO] [stdout]     |
[INFO] [stdout] 725 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 775 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:935:28
[INFO] [stdout]     |
[INFO] [stdout] 935 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:944:34
[INFO] [stdout]     |
[INFO] [stdout] 944 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]     |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:453:105
[INFO] [stdout]     |
[INFO] [stdout] 453 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3159:14
[INFO] [stdout]      |
[INFO] [stdout] 3159 |     for _ in 0..(1 << len) {
[INFO] [stdout]      |              ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::fmt::Debug`
[INFO] [stdout]  --> src/log_store/mod.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::fmt::Debug;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:264:28
[INFO] [stdout]     |
[INFO] [stdout] 264 |         hasher.update(&buf[offset..]);
[INFO] [stdout]     |                            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:317:24
[INFO] [stdout]     |
[INFO] [stdout] 317 |     hasher.update(&buf[buf.len() - 8..]);
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:540:30
[INFO] [stdout]     |
[INFO] [stdout] 540 |                 for index in 0..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:549:34
[INFO] [stdout]     |
[INFO] [stdout] 549 |                     for index in 0..len {
[INFO] [stdout]     |                                  ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:555:34
[INFO] [stdout]     |
[INFO] [stdout] 555 |                     for index in 0..(i + 1) {
[INFO] [stdout]     |                                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:612:30
[INFO] [stdout]     |
[INFO] [stdout] 612 |                 for index in 0..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:617:30
[INFO] [stdout]     |
[INFO] [stdout] 617 |                 for index in i..len {
[INFO] [stdout]     |                              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:709:29
[INFO] [stdout]     |
[INFO] [stdout] 709 |                 let waits = (&mut *mutex);
[INFO] [stdout]     |                             ^           ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 709 -                 let waits = (&mut *mutex);
[INFO] [stdout] 709 +                 let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:732:37
[INFO] [stdout]     |
[INFO] [stdout] 732 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 732 -                         let waits = (&mut *mutex);
[INFO] [stdout] 732 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/log_store/log_file.rs:751:37
[INFO] [stdout]     |
[INFO] [stdout] 751 |                         let waits = (&mut *mutex);
[INFO] [stdout]     |                                     ^           ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 751 -                         let waits = (&mut *mutex);
[INFO] [stdout] 751 +                         let waits = &mut *mutex;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/log_file.rs:955:30
[INFO] [stdout]     |
[INFO] [stdout] 955 |                 for index in 0..readable_len {
[INFO] [stdout]     |                              ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1324:22
[INFO] [stdout]      |
[INFO] [stdout] 1324 |             for _ in 0..log_paths.len() {
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1676:28
[INFO] [stdout]      |
[INFO] [stdout] 1676 |     let head_bin_len = bin[0..header_offset as usize].len();
[INFO] [stdout]      |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1679:22
[INFO] [stdout]      |
[INFO] [stdout] 1679 |     let bytes = &bin[header_offset as usize..header_offset as usize + DEFAULT_LOG_BLOCK_HEADER_LEN];
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1727:22
[INFO] [stdout]      |
[INFO] [stdout] 1727 |     let bytes = &bin[payload_offset as usize..payload_offset as usize + payload_len as usize];
[INFO] [stdout]      |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1880:56
[INFO] [stdout]      |
[INFO] [stdout] 1880 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1893:56
[INFO] [stdout]      |
[INFO] [stdout] 1893 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1980:56
[INFO] [stdout]      |
[INFO] [stdout] 1980 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:302:26
[INFO] [stdout]     |
[INFO] [stdout] 302 |     pub fn append(&self, mut delta: D) {
[INFO] [stdout]     |                          ----^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `RangeFrom` range syntax
[INFO] [stdout]     --> src/log_store/log_file.rs:1993:56
[INFO] [stdout]      |
[INFO] [stdout] 1993 | ...                   hasher.update(&buf[off..]);
[INFO] [stdout]      |                                          ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:325:22
[INFO] [stdout]     |
[INFO] [stdout] 325 |     let bytes = &bin[payload_offset as usize..payload_offset as usize + payload_len as usize];
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:402:28
[INFO] [stdout]     |
[INFO] [stdout] 402 |     let head_bin_len = bin[0..header_offset as usize].len();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/log_store/repair_log_file.rs:405:22
[INFO] [stdout]     |
[INFO] [stdout] 405 |     let bytes = &bin[header_offset as usize..header_offset as usize + DEFAULT_LOG_BLOCK_HEADER_LEN];
[INFO] [stdout]     |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/mod.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:332:29
[INFO] [stdout]     |
[INFO] [stdout] 332 |     pub fn follow_up(&self, mut delta: D) {
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/devices/simple_device.rs:571:18
[INFO] [stdout]     |
[INFO] [stdout] 571 |         for _ in 0..8 {
[INFO] [stdout]     |                  ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> src/devices/simple_device.rs:669:24
[INFO] [stdout]     |
[INFO] [stdout] 669 |     let payload = &buf[DEFAULT_BLOCK_HEAD_LEN..DEFAULT_BLOCK_HEAD_LEN + len];
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:433:17
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let mut logger = self.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `map_first_last` has been stable since 1.66.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/lib.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(map_first_last)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:331:17
[INFO] [stdout]     |
[INFO] [stdout] 331 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:298:34
[INFO] [stdout]     |
[INFO] [stdout] 298 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[INFO] [stdout]     |                                  ----^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1489:8
[INFO] [stdout]      |
[INFO] [stdout] 1473 | / impl<
[INFO] [stdout] 1474 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1475 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1476 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1489 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1544 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1561:5
[INFO] [stdout]      |
[INFO] [stdout] 1555 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1561 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1770:5
[INFO] [stdout]      |
[INFO] [stdout] 1769 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 1770 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1771 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1832:8
[INFO] [stdout]      |
[INFO] [stdout] 1784 | / impl<
[INFO] [stdout] 1785 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1786 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1787 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1832 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1842 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1984:5
[INFO] [stdout]      |
[INFO] [stdout] 1977 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1984 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1985 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2057:5
[INFO] [stdout]      |
[INFO] [stdout] 2052 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2057 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2081:5
[INFO] [stdout]      |
[INFO] [stdout] 2076 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2081 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2153:5
[INFO] [stdout]      |
[INFO] [stdout] 2148 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2153 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2365:5
[INFO] [stdout]      |
[INFO] [stdout] 2360 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2365 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2630:5
[INFO] [stdout]      |
[INFO] [stdout] 2625 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2630 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2840:5
[INFO] [stdout]      |
[INFO] [stdout] 2835 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2840 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3106:5
[INFO] [stdout]      |
[INFO] [stdout] 3101 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3106 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3125:8
[INFO] [stdout]      |
[INFO] [stdout] 3120 | / impl<
[INFO] [stdout] 3121 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3122 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3123 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3124 |       // 构建手动提交对树的修改
[INFO] [stdout] 3125 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1376:4
[INFO] [stdout]      |
[INFO] [stdout] 1376 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1388:4
[INFO] [stdout]      |
[INFO] [stdout] 1388 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sync_interval` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1077:5
[INFO] [stdout]      |
[INFO] [stdout] 1050 | struct InnerVirtualPageManager<
[INFO] [stdout]      |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     sync_interval:      usize,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `delay_timeout` are never read
[INFO] [stdout]    --> src/vpm/page_table.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 307 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- fields in this struct
[INFO] [stdout] 308 |     rt:                 MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     delay_timeout:      usize,                      //延迟刷新虚拟页表的时间，单位毫秒
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 152 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 153 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 154 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 155 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 156 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 158 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 159 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 160 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 161 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 163 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 164 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 165 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 166 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 167 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 168 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 169 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 170 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 172 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 174 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 175 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 176 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:736:5
[INFO] [stdout]     |
[INFO] [stdout] 736 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:813:5
[INFO] [stdout]     |
[INFO] [stdout] 813 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]     |     ^^^^^------------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1151:57
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                         ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout]      = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                            +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                        +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1180:61
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                             ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                                +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:502:9
[INFO] [stdout]     |
[INFO] [stdout] 502 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:516:13
[INFO] [stdout]     |
[INFO] [stdout] 516 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:545:18
[INFO] [stdout]     |
[INFO] [stdout] 545 |             Some(mut i) => {
[INFO] [stdout]     |                  ----^
[INFO] [stdout]     |                  |
[INFO] [stdout]     |                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:586:13
[INFO] [stdout]     |
[INFO] [stdout] 586 |         let mut offset = None;
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/log_store/log_file.rs:609:21
[INFO] [stdout]     |
[INFO] [stdout] 609 |         if let Some(mut i) = log_index {
[INFO] [stdout]     |                     ----^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `commit_block` is never read
[INFO] [stdout]    --> src/log_store/log_file.rs:655:17
[INFO] [stdout]     |
[INFO] [stdout] 655 |         let mut commit_block = None;
[INFO] [stdout]     |                 ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/log_store/log_file.rs:1051:31
[INFO] [stdout]      |
[INFO] [stdout] 1051 | ...                   mut remove_paths: Vec<PathBuf>,
[INFO] [stdout]      |                       ----^^^^^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:197:24
[INFO] [stdout]     |
[INFO] [stdout] 197 |     pub async fn build(mut self) -> VirtualPageManager<C, O, B, D, P, I, M, BU, BS, BK, BV, BD> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 95 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `lmdb`
[INFO] [stdout]  --> tests/test_lmdb.rs:1:1
[INFO] [stdout]   |
[INFO] [stdout] 1 | extern crate lmdb;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `pi_db`
[INFO] [stdout]  --> tests/test_lmdb.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | extern crate pi_db;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of undeclared crate or module `r#async`
[INFO] [stdout]   --> benches/bench_persy.rs:13:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | use r#async::rt::multi_thread::MultiTaskRuntimeBuilder;
[INFO] [stdout]    |     ^^^^^^^ use of undeclared crate or module `r#async`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> tests/test_devices.rs:2:27
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_channel::unbounded`
[INFO] [stdout]  --> tests/test_devices.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crossbeam_channel::unbounded;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]  --> benches/bench_persy.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::thread;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Instant`
[INFO] [stdout]  --> benches/bench_persy.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::time::{Duration, Instant};
[INFO] [stdout]   |                           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `bounded`
[INFO] [stdout]  --> benches/bench_persy.rs:9:36
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crossbeam_channel::{unbounded, bounded};
[INFO] [stdout]   |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]   --> benches/bench_persy.rs:10:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ToSegmentId`
[INFO] [stdout]   --> benches/bench_persy.rs:11:48
[INFO] [stdout]    |
[INFO] [stdout] 11 | use persy::{Config, Persy, ValueMode, PersyId, ToSegmentId};
[INFO] [stdout]    |                                                ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> benches/bench_b_plus_tree.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRefGuard`
[INFO] [stdout]  --> benches/bench_b_plus_tree.rs:8:53
[INFO] [stdout]   |
[INFO] [stdout] 8 | use pi_store::free_lock::b_plus_tree::{CowBtreeMap, KeyRefGuard, KeyIterator, KVPairIterator};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_persy.rs:21:30
[INFO] [stdout]    |
[INFO] [stdout] 21 |     let mut vec: Vec<u64> = (0..10).collect();
[INFO] [stdout]    |                              ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `atom`
[INFO] [stdout]  --> tests/test_lmdb.rs:6:1
[INFO] [stdout]   |
[INFO] [stdout] 6 | extern crate atom;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:14:22
[INFO] [stdout]    |
[INFO] [stdout] 14 |         for index in 0..100000 {
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `bon`
[INFO] [stdout]  --> tests/test_lmdb.rs:7:1
[INFO] [stdout]   |
[INFO] [stdout] 7 | extern crate bon;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:30:18
[INFO] [stdout]    |
[INFO] [stdout] 30 |         for _ in 0..100000 {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:45:32
[INFO] [stdout]    |
[INFO] [stdout] 45 |     let mut vec: Vec<usize> = (0..100000).collect();
[INFO] [stdout]    |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `guid`
[INFO] [stdout]  --> tests/test_lmdb.rs:8:1
[INFO] [stdout]   |
[INFO] [stdout] 8 | extern crate guid;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:64:18
[INFO] [stdout]    |
[INFO] [stdout] 64 |     for index in 0..100000 {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0463]: can't find crate for `sinfo`
[INFO] [stdout]  --> tests/test_lmdb.rs:9:1
[INFO] [stdout]   |
[INFO] [stdout] 9 | extern crate sinfo;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^ can't find crate
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:73:22
[INFO] [stdout]    |
[INFO] [stdout] 73 |         for index in 0..100000 {
[INFO] [stdout]    |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:86:18
[INFO] [stdout]    |
[INFO] [stdout] 86 |     for index in 0..100000 {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> benches/bench_b_plus_tree.rs:96:18
[INFO] [stdout]    |
[INFO] [stdout] 96 |         for _ in 0..100000 {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:110:32
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let mut vec: Vec<usize> = (0..100000).collect();
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:114:18
[INFO] [stdout]     |
[INFO] [stdout] 114 |     for index in 0..100000 {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:137:22
[INFO] [stdout]     |
[INFO] [stdout] 137 |         for index in 0..100000 {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:145:22
[INFO] [stdout]     |
[INFO] [stdout] 145 |         for index in 0..100000 {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:159:22
[INFO] [stdout]     |
[INFO] [stdout] 159 |         for index in 0..100000 {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:168:18
[INFO] [stdout]     |
[INFO] [stdout] 168 |         for _ in 0..100000 {
[INFO] [stdout]     |                  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:182:32
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let mut vec: Vec<usize> = (0..100000).collect();
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:187:22
[INFO] [stdout]     |
[INFO] [stdout] 187 |         for index in 0..100000 {
[INFO] [stdout]     |                      ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:208:18
[INFO] [stdout]     |
[INFO] [stdout] 208 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:217:22
[INFO] [stdout]     |
[INFO] [stdout] 217 |         for index in 0..1000000 {
[INFO] [stdout]     |                      ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:230:18
[INFO] [stdout]     |
[INFO] [stdout] 230 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:240:18
[INFO] [stdout]     |
[INFO] [stdout] 240 |         for _ in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:254:32
[INFO] [stdout]     |
[INFO] [stdout] 254 |     let mut vec: Vec<usize> = (0..1000000).collect();
[INFO] [stdout]     |                                ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:258:18
[INFO] [stdout]     |
[INFO] [stdout] 258 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:280:18
[INFO] [stdout]     |
[INFO] [stdout] 280 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:308:18
[INFO] [stdout]     |
[INFO] [stdout] 308 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:336:18
[INFO] [stdout]     |
[INFO] [stdout] 336 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> benches/bench_b_plus_tree.rs:364:18
[INFO] [stdout]     |
[INFO] [stdout] 364 |     for index in 0..1000000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_vpm.rs:39:14
[INFO] [stdout]    |
[INFO] [stdout] 39 |     for i in 0..1000 {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_vpm.rs:45:18
[INFO] [stdout]    |
[INFO] [stdout] 45 |         for i in 0..1000 {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_vpm.rs:53:18
[INFO] [stdout]    |
[INFO] [stdout] 53 |         for i in 0..1000 {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_vpm.rs:55:31
[INFO] [stdout]    |
[INFO] [stdout] 55 |             let _v: Vec<_> = (i..j).map(|k| map_2.get(&k)).collect();
[INFO] [stdout]    |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_vpm.rs:97:22
[INFO] [stdout]    |
[INFO] [stdout] 97 |         for index in 0..10 {
[INFO] [stdout]    |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:117:24
[INFO] [stdout]     |
[INFO] [stdout] 117 |         for page_id in 1..current_page_uid {
[INFO] [stdout]     |                        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:137:26
[INFO] [stdout]     |
[INFO] [stdout] 137 |             for index in location..location + 1000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:150:26
[INFO] [stdout]     |
[INFO] [stdout] 150 |             for index in location + 1000..location + 2000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:163:26
[INFO] [stdout]     |
[INFO] [stdout] 163 |             for index in location + 2000..location + 3000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:176:26
[INFO] [stdout]     |
[INFO] [stdout] 176 |             for index in location + 3000..location + 4000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:189:26
[INFO] [stdout]     |
[INFO] [stdout] 189 |             for index in location + 4000..location + 5000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:202:26
[INFO] [stdout]     |
[INFO] [stdout] 202 |             for index in location + 5000..location + 6000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/page_manager.rs:716:32
[INFO] [stdout]     |
[INFO] [stdout] 716 | ...                   mut cmd: VirtualPageWriteCmd<C, D>,
[INFO] [stdout]     |                       ----^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:215:26
[INFO] [stdout]     |
[INFO] [stdout] 215 |             for index in location + 6000..location + 7000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:228:26
[INFO] [stdout]     |
[INFO] [stdout] 228 |             for index in location + 7000..location + 8000 {
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:474:22
[INFO] [stdout]     |
[INFO] [stdout] 474 |         for index in 0..10 {
[INFO] [stdout]     |                      ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_vpm.rs:479:22
[INFO] [stdout]     |
[INFO] [stdout] 479 |             for _ in 0..5 {
[INFO] [stdout]     |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VecDeque`
[INFO] [stdout]  --> tests/test_log_file.rs:1:34
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::collections::{BTreeMap, VecDeque};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `AtomicBool`
[INFO] [stdout]  --> tests/test_log_file.rs:3:25
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
[INFO] [stdout]   |                         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `async_lock::Mutex`
[INFO] [stdout]  --> tests/test_log_file.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use async_lock::Mutex;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `MultiTaskRuntime`
[INFO] [stdout]   --> tests/test_log_file.rs:13:38
[INFO] [stdout]    |
[INFO] [stdout] 13 |                       multi_thread::{MultiTaskRuntime, MultiTaskRuntimeBuilder}};
[INFO] [stdout]    |                                      ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `read_log_file_block`, `read_log_file`
[INFO] [stdout]   --> tests/test_log_file.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 |     read_log_file, read_log_file_block, LogFile, LogMethod, PairLoader,
[INFO] [stdout]    |     ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::ErrorKind`
[INFO] [stdout]   --> tests/test_log_file.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::io::ErrorKind;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `pi_store::lmdb_file`
[INFO] [stdout]   --> tests/test_lmdb.rs:24:15
[INFO] [stdout]    |
[INFO] [stdout] 24 | use pi_store::lmdb_file::DB;
[INFO] [stdout]    |               ^^^^^^^^^ could not find `lmdb_file` in `pi_store`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:198:30
[INFO] [stdout]     |
[INFO] [stdout] 198 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:237:30
[INFO] [stdout]     |
[INFO] [stdout] 237 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:463:30
[INFO] [stdout]     |
[INFO] [stdout] 463 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:502:30
[INFO] [stdout]     |
[INFO] [stdout] 502 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:541:30
[INFO] [stdout]     |
[INFO] [stdout] 541 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:580:30
[INFO] [stdout]     |
[INFO] [stdout] 580 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_log_file.rs:637:30
[INFO] [stdout]     |
[INFO] [stdout] 637 |                 for index in 0..10000 {
[INFO] [stdout]     |                              ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 1 previous error; 6 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0433`.
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Rng`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | use rand::{Rng, SeedableRng, seq::SliceRandom, rngs::SmallRng};
[INFO] [stdout]   |            ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyRefGuard`
[INFO] [stdout]  --> tests/test_b_plus_tree.rs:3:53
[INFO] [stdout]   |
[INFO] [stdout] 3 | use pi_store::free_lock::b_plus_tree::{CowBtreeMap, KeyRefGuard, KeyIterator, KVPairIterator};
[INFO] [stdout]   |                                                     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (bench "bench_persy") due to 2 previous errors; 6 warnings emitted
[INFO] [stdout] warning: unused import: `std::fs`
[INFO] [stdout]   --> tests/test_lmdb.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use std::fs;
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]   --> tests/test_lmdb.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use std::path::Path;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time`
[INFO] [stdout]   --> tests/test_lmdb.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 15 | use std::time;
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_lmdb.rs:142:14
[INFO] [stdout]     |
[INFO] [stdout] 142 |     for i in 0..10 {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_lmdb.rs:165:14
[INFO] [stdout]     |
[INFO] [stdout] 165 |     for i in 0..10 {
[INFO] [stdout]     |              ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:28:18
[INFO] [stdout]    |
[INFO] [stdout] 28 |     for index in 0..1000 {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-W range-syntax`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:44:14
[INFO] [stdout]    |
[INFO] [stdout] 44 |     for _ in 0..1000 {
[INFO] [stdout]    |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:61:14
[INFO] [stdout]    |
[INFO] [stdout] 61 |     for _ in 0..100 {
[INFO] [stdout]    |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:63:36
[INFO] [stdout]    |
[INFO] [stdout] 63 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]    |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:84:18
[INFO] [stdout]    |
[INFO] [stdout] 84 |     for index in 0..1000 {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]   --> tests/test_b_plus_tree.rs:91:18
[INFO] [stdout]    |
[INFO] [stdout] 91 |     for index in 0..1000 {
[INFO] [stdout]    |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:111:14
[INFO] [stdout]     |
[INFO] [stdout] 111 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:122:14
[INFO] [stdout]     |
[INFO] [stdout] 122 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:143:14
[INFO] [stdout]     |
[INFO] [stdout] 143 |     for _ in 0..100 {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:145:36
[INFO] [stdout]     |
[INFO] [stdout] 145 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:155:36
[INFO] [stdout]     |
[INFO] [stdout] 155 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:179:18
[INFO] [stdout]     |
[INFO] [stdout] 179 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:186:18
[INFO] [stdout]     |
[INFO] [stdout] 186 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:201:18
[INFO] [stdout]     |
[INFO] [stdout] 201 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:209:14
[INFO] [stdout]     |
[INFO] [stdout] 209 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:226:14
[INFO] [stdout]     |
[INFO] [stdout] 226 |     for _ in 0..100 {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:228:36
[INFO] [stdout]     |
[INFO] [stdout] 228 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:238:36
[INFO] [stdout]     |
[INFO] [stdout] 238 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:259:18
[INFO] [stdout]     |
[INFO] [stdout] 259 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:271:18
[INFO] [stdout]     |
[INFO] [stdout] 271 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:283:14
[INFO] [stdout]     |
[INFO] [stdout] 283 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:299:14
[INFO] [stdout]     |
[INFO] [stdout] 299 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:312:14
[INFO] [stdout]     |
[INFO] [stdout] 312 |     for _ in 0..100 {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:106:13
[INFO] [stdout]     |
[INFO] [stdout] 106 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:314:36
[INFO] [stdout]     |
[INFO] [stdout] 314 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:128:13
[INFO] [stdout]     |
[INFO] [stdout] 128 |     thread::sleep_ms(1000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:319:36
[INFO] [stdout]     |
[INFO] [stdout] 319 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:201:13
[INFO] [stdout]     |
[INFO] [stdout] 201 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:220:13
[INFO] [stdout]     |
[INFO] [stdout] 220 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:233:13
[INFO] [stdout]     |
[INFO] [stdout] 233 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:240:13
[INFO] [stdout]     |
[INFO] [stdout] 240 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:337:32
[INFO] [stdout]     |
[INFO] [stdout] 337 |     let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:251:13
[INFO] [stdout]     |
[INFO] [stdout] 251 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:349:14
[INFO] [stdout]     |
[INFO] [stdout] 349 |     for _ in 0..100 {
[INFO] [stdout]     |              ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `std::thread::sleep_ms`: replaced by `std::thread::sleep`
[INFO] [stdout]    --> tests/test_lmdb.rs:258:13
[INFO] [stdout]     |
[INFO] [stdout] 258 |     thread::sleep_ms(2000);
[INFO] [stdout]     |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:351:36
[INFO] [stdout]     |
[INFO] [stdout] 351 |         let mut vec: Vec<usize> = (0..1000).collect();
[INFO] [stdout]     |                                    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:357:36
[INFO] [stdout]     |
[INFO] [stdout] 357 |         let mut vec: Vec<usize> = (0..500).collect();
[INFO] [stdout]     |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `spawn` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:16:8
[INFO] [stdout]     |
[INFO] [stdout] 16  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |     ---^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:372:32
[INFO] [stdout]     |
[INFO] [stdout] 372 |     let mut vec: Vec<usize> = (500..1000).collect();
[INFO] [stdout]     |                                ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:388:18
[INFO] [stdout]     |
[INFO] [stdout] 388 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:414:18
[INFO] [stdout]     |
[INFO] [stdout] 414 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:440:18
[INFO] [stdout]     |
[INFO] [stdout] 440 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:466:18
[INFO] [stdout]     |
[INFO] [stdout] 466 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:487:18
[INFO] [stdout]     |
[INFO] [stdout] 487 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:494:18
[INFO] [stdout]     |
[INFO] [stdout] 494 |     for index in 2000..3000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:544:14
[INFO] [stdout]     |
[INFO] [stdout] 544 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:574:14
[INFO] [stdout]     |
[INFO] [stdout] 574 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:599:14
[INFO] [stdout]     |
[INFO] [stdout] 599 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:629:14
[INFO] [stdout]     |
[INFO] [stdout] 629 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `alloc` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:16:17
[INFO] [stdout]     |
[INFO] [stdout] 16  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |                 ^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:630:8
[INFO] [stdout]     |
[INFO] [stdout] 630 |     fn alloc<R: 'static>(&self) -> TaskId;
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:659:14
[INFO] [stdout]     |
[INFO] [stdout] 659 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 7 previous errors; 13 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0432, E0463.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0432`.
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:670:14
[INFO] [stdout]     |
[INFO] [stdout] 670 |     for _ in 2000..3000 {
[INFO] [stdout]     |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:722:18
[INFO] [stdout]     |
[INFO] [stdout] 722 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:749:18
[INFO] [stdout]     |
[INFO] [stdout] 749 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:777:18
[INFO] [stdout]     |
[INFO] [stdout] 777 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:804:18
[INFO] [stdout]     |
[INFO] [stdout] 804 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:825:18
[INFO] [stdout]     |
[INFO] [stdout] 825 |     for index in 0..1000 {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:832:18
[INFO] [stdout]     |
[INFO] [stdout] 832 |     for index in 2000..3000 {
[INFO] [stdout]     |                  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:884:14
[INFO] [stdout]     |
[INFO] [stdout] 884 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:915:14
[INFO] [stdout]     |
[INFO] [stdout] 915 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:940:14
[INFO] [stdout]     |
[INFO] [stdout] 940 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:971:14
[INFO] [stdout]     |
[INFO] [stdout] 971 |     for _ in 0..1000 {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1002:14
[INFO] [stdout]      |
[INFO] [stdout] 1002 |     for _ in 0..1000 {
[INFO] [stdout]      |              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: usage of `Range` range syntax
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1013:14
[INFO] [stdout]      |
[INFO] [stdout] 1013 |     for _ in 2000..3000 {
[INFO] [stdout]      |              ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `spawn` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:52:8
[INFO] [stdout]     |
[INFO] [stdout] 52  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |     ---^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `alloc` found for struct `MultiTaskRuntime` in the current scope
[INFO] [stdout]    --> tests/test_devices.rs:52:17
[INFO] [stdout]     |
[INFO] [stdout] 52  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |                 ^^^^^ method not found in `MultiTaskRuntime<_, StealableTaskPool<_>>`
[INFO] [stdout]     |
[INFO] [stdout]    ::: /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:630:8
[INFO] [stdout]     |
[INFO] [stdout] 630 |     fn alloc<R: 'static>(&self) -> TaskId;
[INFO] [stdout]     |        ----- the method is available for `MultiTaskRuntime<_, StealableTaskPool<_>>` here
[INFO] [stdout]     |
[INFO] [stdout]     = help: items from traits can only be used if the trait is in scope
[INFO] [stdout] help: the following trait is implemented but not in scope; perhaps add a `use` for it:
[INFO] [stdout]     |
[INFO] [stdout] 1   + use pi_async_rt::prelude::AsyncRuntime;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_lmdb") due to 8 previous errors; 13 warnings emitted
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> tests/test_vpm.rs:94:22
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(AsyncRuntime::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                      ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(bare_trait_objects)]` on by default
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(<dyn AsyncRuntime>::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                      ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 4 previous errors; 2 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `old_location` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1513:17
[INFO] [stdout]      |
[INFO] [stdout] 1513 |         let mut old_location = EMPTY_BLOCK; //默认旧的块位置为空块
[INFO] [stdout]      |                 ^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 27 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_devices") due to 5 previous errors; 2 warnings emitted
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]   --> tests/test_vpm.rs:94:36
[INFO] [stdout]    |
[INFO] [stdout] 94 |     all.auto_collect(AsyncRuntime::Multi(rt.clone()), 5000);
[INFO] [stdout]    |                                    ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:96:14
[INFO] [stdout]     |
[INFO] [stdout] 96  |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> tests/test_vpm.rs:98:20
[INFO] [stdout]    |
[INFO] [stdout] 98 |             if let Some(buf) = mgr.insert(index, TestBin(Arc::new(vec![index as u8]))) {
[INFO] [stdout]    |                    ^^^^^^^^^   ------------------------------------------------------- this expression has type `Result<Arc<pi_assets::asset::Droper<TestBin>>, TestBin>`
[INFO] [stdout]    |                    |
[INFO] [stdout]    |                    expected `Result<Arc<Droper<TestBin>>, ...>`, found `Option<_>`
[INFO] [stdout]    |
[INFO] [stdout]    = note: expected enum `Result<Arc<pi_assets::asset::Droper<TestBin>>, TestBin>`
[INFO] [stdout]               found enum `Option<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:96:8
[INFO] [stdout]     |
[INFO] [stdout] 96  |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 97  | ||         for index in 0..10 {
[INFO] [stdout] 98  | ||             if let Some(buf) = mgr.insert(index, TestBin(Arc::new(vec![index as u8]))) {
[INFO] [stdout] 99  | ||                 println!("!!!!!!load ok, index: {:?}, buf: {:?}", index, buf.0.as_slice());
[INFO] [stdout] 100 | ||             }
[INFO] [stdout] 101 | ||         }
[INFO] [stdout] 102 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:96:26: 102:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:113:14
[INFO] [stdout]     |
[INFO] [stdout] 113 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:136:23
[INFO] [stdout]     |
[INFO] [stdout] 136 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:136:17
[INFO] [stdout]     |
[INFO] [stdout] 136 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 137 | ||             for index in location..location + 1000 {
[INFO] [stdout] 138 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 139 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 145 | ||             sender0.send(Some(()));
[INFO] [stdout] 146 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:136:40: 146:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:149:23
[INFO] [stdout]     |
[INFO] [stdout] 149 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:149:17
[INFO] [stdout]     |
[INFO] [stdout] 149 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 150 | ||             for index in location + 1000..location + 2000 {
[INFO] [stdout] 151 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 152 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 158 | ||             sender1.send(Some(()));
[INFO] [stdout] 159 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:149:40: 159:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:162:23
[INFO] [stdout]     |
[INFO] [stdout] 162 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:162:17
[INFO] [stdout]     |
[INFO] [stdout] 162 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 163 | ||             for index in location + 2000..location + 3000 {
[INFO] [stdout] 164 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 165 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 171 | ||             sender2.send(Some(()));
[INFO] [stdout] 172 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:162:40: 172:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:81:25
[INFO] [stdout]    |
[INFO] [stdout] 81 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:82:25
[INFO] [stdout]    |
[INFO] [stdout] 82 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:175:17
[INFO] [stdout]     |
[INFO] [stdout] 175 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 176 | ||             for index in location + 3000..location + 4000 {
[INFO] [stdout] 177 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 178 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 184 | ||             sender3.send(Some(()));
[INFO] [stdout] 185 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:175:40: 185:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:83:25
[INFO] [stdout]    |
[INFO] [stdout] 83 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:84:25
[INFO] [stdout]    |
[INFO] [stdout] 84 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:85:25
[INFO] [stdout]    |
[INFO] [stdout] 85 |                     let uid = log.append(LogMethod::PlainAppend, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `uid`
[INFO] [stdout]   --> tests/test_log_file.rs:86:25
[INFO] [stdout]    |
[INFO] [stdout] 86 |                     let uid = log.append(LogMethod::Remove, key.as_slice(), value);
[INFO] [stdout]    |                         ^^^ help: if this is intentional, prefix it with an underscore: `_uid`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:188:23
[INFO] [stdout]     |
[INFO] [stdout] 188 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:188:17
[INFO] [stdout]     |
[INFO] [stdout] 188 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 189 | ||             for index in location + 4000..location + 5000 {
[INFO] [stdout] 190 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 191 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 197 | ||             sender4.send(Some(()));
[INFO] [stdout] 198 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:188:40: 198:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:201:23
[INFO] [stdout]     |
[INFO] [stdout] 201 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:201:17
[INFO] [stdout]     |
[INFO] [stdout] 201 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 202 | ||             for index in location + 5000..location + 6000 {
[INFO] [stdout] 203 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 204 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 210 | ||             sender5.send(Some(()));
[INFO] [stdout] 211 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:201:40: 211:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:214:23
[INFO] [stdout]     |
[INFO] [stdout] 214 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:214:17
[INFO] [stdout]     |
[INFO] [stdout] 214 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 215 | ||             for index in location + 6000..location + 7000 {
[INFO] [stdout] 216 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 217 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 223 | ||             sender6.send(Some(()));
[INFO] [stdout] 224 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:214:40: 224:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:227:23
[INFO] [stdout]     |
[INFO] [stdout] 227 |         rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                 ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:227:17
[INFO] [stdout]     |
[INFO] [stdout] 227 |            rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 228 | ||             for index in location + 7000..location + 8000 {
[INFO] [stdout] 229 | ||                 let page_id = page_table_copy.alloc_page_uid();
[INFO] [stdout] 230 | ||                 if let Some(_) = page_table_copy.register(page_id as u128, index as u64) {
[INFO] [stdout] ...   ||
[INFO] [stdout] 236 | ||             sender7.send(Some(()));
[INFO] [stdout] 237 | ||         });
[INFO] [stdout]     | ||         -
[INFO] [stdout]     | ||_________|
[INFO] [stdout]     |  |_________unexpected argument of type `{async block@tests/test_vpm.rs:227:40: 237:10}`
[INFO] [stdout]     |            help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 114 | ||         let page_table = VirtualPageTable::new(rt_copy.clone(), "./page_table", 1, 32 * 1024 * 1024, 8192, true, 1).await;
[INFO] [stdout] 115 | ||         let current_page_uid = page_table.current_page_uid() as u128;
[INFO] [stdout] 116 | ||         println!("!!!!!!current page uid: {}", current_page_uid);
[INFO] [stdout] ...   ||
[INFO] [stdout] 265 | ||         println!("!!!!!!flush ok, time: {:?}", now.elapsed());
[INFO] [stdout] 266 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:113:26: 266:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:446:14
[INFO] [stdout]     |
[INFO] [stdout] 446 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:471:30
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:265:26
[INFO] [stdout]     |
[INFO] [stdout] 265 |     fn is_require(&self, log_file: Option<&PathBuf>, key: &Vec<u8>) -> bool {
[INFO] [stdout]     |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `log_file`
[INFO] [stdout]    --> tests/test_log_file.rs:271:9
[INFO] [stdout]     |
[INFO] [stdout] 271 |         log_file: Option<&PathBuf>,
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_log_file`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:471:44
[INFO] [stdout]     |
[INFO] [stdout] 471 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:446:8
[INFO] [stdout]     |
[INFO] [stdout] 446 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 447 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 448 | ||                                               "./device/0.simple",
[INFO] [stdout] 449 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 499 | ||         }
[INFO] [stdout] 500 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:446:26: 500:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:520:14
[INFO] [stdout]     |
[INFO] [stdout] 520 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:545:30
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:545:44
[INFO] [stdout]     |
[INFO] [stdout] 545 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:520:8
[INFO] [stdout]     |
[INFO] [stdout] 520 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 521 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 522 | ||                                               "./device/0.simple",
[INFO] [stdout] 523 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 559 | ||         println!("!!!!!!loaded finish, count: {}", count);
[INFO] [stdout] 560 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:520:26: 560:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:580:14
[INFO] [stdout]     |
[INFO] [stdout] 580 |     rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |        ----- ^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |        |
[INFO] [stdout]     |        required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> tests/test_vpm.rs:605:30
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/nightly/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] help: if this is an object-safe trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(<dyn AsyncRuntime>::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                              ++++             +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no associated item named `Multi` found for trait object `(dyn pi_async_rt::prelude::AsyncRuntime<_> + 'static)` in the current scope
[INFO] [stdout]    --> tests/test_vpm.rs:605:44
[INFO] [stdout]     |
[INFO] [stdout] 605 |         startup_auto_collect(AsyncRuntime::Multi(rt_copy.clone()), 5000);
[INFO] [stdout]     |                                            ^^^^^ associated item not found in `dyn AsyncRuntime<_>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `TaskId` is not a future
[INFO] [stdout]    --> tests/test_vpm.rs:622:31
[INFO] [stdout]     |
[INFO] [stdout] 622 |                 rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |                         ----- ^^^^^^^^^^^^^^^ `TaskId` is not a future
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `futures::Future` is not implemented for `TaskId`
[INFO] [stdout]     = note: TaskId must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout] note: required by a bound in `pi_async_rt::prelude::AsyncRuntime::spawn`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:634:18
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ----- required by a bound in this associated function
[INFO] [stdout] 634 |         where F: Future<Output = O> + Send + 'static;
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^^ required by this bound in `AsyncRuntime::spawn`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/vpm/page_manager.rs:1333:9
[INFO] [stdout]      |
[INFO] [stdout] 1333 |     let mut locked = write_cmd_buffer
[INFO] [stdout]      |         ----^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:622:25
[INFO] [stdout]     |
[INFO] [stdout] 622 |                    rt_copy.spawn(rt_copy.alloc(), async move {
[INFO] [stdout]     |  __________________________^^^^^________________-_-
[INFO] [stdout]     | | ______________________________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 623 | ||                     match page_manager_copy.write_through(cmd, None).await {
[INFO] [stdout] 624 | ||                         Err(e) => {
[INFO] [stdout] 625 | ||                             panic!("Write through failed, reason: {:?}", e);
[INFO] [stdout] ...   ||
[INFO] [stdout] 630 | ||                     }
[INFO] [stdout] 631 | ||                 });
[INFO] [stdout]     | ||                 -
[INFO] [stdout]     | ||_________________|
[INFO] [stdout]     |  |_________________unexpected argument of type `{async block@tests/test_vpm.rs:622:48: 631:18}`
[INFO] [stdout]     |                    help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> tests/test_vpm.rs:580:8
[INFO] [stdout]     |
[INFO] [stdout] 580 |        rt.spawn(rt.alloc(), async move {
[INFO] [stdout]     |  _________^^^^^___________-_-
[INFO] [stdout]     | | ________________________|
[INFO] [stdout]     | ||
[INFO] [stdout] 581 | ||         let device = match SimpleDevice::open(rt_copy.clone(),
[INFO] [stdout] 582 | ||                                               "./device/0.simple",
[INFO] [stdout] 583 | ||                                               None).await {
[INFO] [stdout] ...   ||
[INFO] [stdout] 633 | ||         }
[INFO] [stdout] 634 | ||     });
[INFO] [stdout]     | ||     -
[INFO] [stdout]     | ||_____|
[INFO] [stdout]     |  |_____unexpected argument of type `{async block@tests/test_vpm.rs:580:26: 634:6}`
[INFO] [stdout]     |        help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-6f17d22bba15001f/pi-async-rt-0.1.18/src/rt/mod.rs:633:8
[INFO] [stdout]     |
[INFO] [stdout] 633 |     fn spawn<F>(&self, future: F) -> Result<TaskId>
[INFO] [stdout]     |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `VirtualPageCachingStrategy`
[INFO] [stdout]   --> tests/test_vpm.rs:27:34
[INFO] [stdout]    |
[INFO] [stdout] 27 |                      page_pool::{VirtualPageCachingStrategy,
[INFO] [stdout]    |                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crossbeam_channel::internal::SelectHandle`
[INFO] [stdout]   --> tests/test_vpm.rs:11:5
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crossbeam_channel::internal::SelectHandle;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:298:9
[INFO] [stdout]     |
[INFO] [stdout] 298 |     let mut index = 999;
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_log_file.rs:618:21
[INFO] [stdout]     |
[INFO] [stdout] 618 |                 let mut count = Arc::new(AtomicUsize::new(0));
[INFO] [stdout]     |                     ----^^^^^
[INFO] [stdout]     |                     |
[INFO] [stdout]     |                     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut iterator = map.keys(None, false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:421:9
[INFO] [stdout]     |
[INFO] [stdout] 421 |     let mut iterator = map.keys(Some(&0), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:447:9
[INFO] [stdout]     |
[INFO] [stdout] 447 |     let mut iterator = map.keys(Some(&700), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 33 previous errors; 22 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0308, E0599.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:473:9
[INFO] [stdout]     |
[INFO] [stdout] 473 |     let mut iterator = map.keys(Some(&999), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:501:9
[INFO] [stdout]     |
[INFO] [stdout] 501 |     let mut iterator = map.keys(Some(&-1), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:502:35
[INFO] [stdout]     |
[INFO] [stdout] 502 |     if let KeyIterator::Ascending(mut keys) = iterator {
[INFO] [stdout]     |                                   ----^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:515:9
[INFO] [stdout]     |
[INFO] [stdout] 515 |     let mut iterator = map.keys(Some(&1500), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:516:35
[INFO] [stdout]     |
[INFO] [stdout] 516 |     if let KeyIterator::Ascending(mut keys) = iterator {
[INFO] [stdout]     |                                   ----^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:526:9
[INFO] [stdout]     |
[INFO] [stdout] 526 |     let mut iterator = map.keys(Some(&3000), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `pi_store` (test "test_vpm") due to 34 previous errors; 22 warnings emitted
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:554:9
[INFO] [stdout]     |
[INFO] [stdout] 554 |     let mut iterator = map.keys(None, true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:584:9
[INFO] [stdout]     |
[INFO] [stdout] 584 |     let mut iterator = map.keys(Some(&0), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:609:9
[INFO] [stdout]     |
[INFO] [stdout] 609 |     let mut iterator = map.keys(Some(&700), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:639:9
[INFO] [stdout]     |
[INFO] [stdout] 639 |     let mut iterator = map.keys(Some(&999), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:640:36
[INFO] [stdout]     |
[INFO] [stdout] 640 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:680:9
[INFO] [stdout]     |
[INFO] [stdout] 680 |     let mut iterator = map.keys(Some(&-1), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:686:9
[INFO] [stdout]     |
[INFO] [stdout] 686 |     let mut iterator = map.keys(Some(&1500), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:687:36
[INFO] [stdout]     |
[INFO] [stdout] 687 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:697:9
[INFO] [stdout]     |
[INFO] [stdout] 697 |     let mut iterator = map.keys(Some(&3000), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:698:36
[INFO] [stdout]     |
[INFO] [stdout] 698 |     if let KeyIterator::Descending(mut keys) = iterator {
[INFO] [stdout]     |                                    ----^^^^
[INFO] [stdout]     |                                    |
[INFO] [stdout]     |                                    help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:729:9
[INFO] [stdout]     |
[INFO] [stdout] 729 |     let mut iterator = map.values(None, false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:756:9
[INFO] [stdout]     |
[INFO] [stdout] 756 |     let mut iterator = map.values(Some(&0), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:784:9
[INFO] [stdout]     |
[INFO] [stdout] 784 |     let mut iterator = map.values(Some(&700), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:811:9
[INFO] [stdout]     |
[INFO] [stdout] 811 |     let mut iterator = map.values(Some(&999), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:839:9
[INFO] [stdout]     |
[INFO] [stdout] 839 |     let mut iterator = map.values(Some(&-1), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:840:38
[INFO] [stdout]     |
[INFO] [stdout] 840 |     if let KVPairIterator::Ascending(mut values) = iterator {
[INFO] [stdout]     |                                      ----^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:854:9
[INFO] [stdout]     |
[INFO] [stdout] 854 |     let mut iterator = map.values(Some(&1500), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:855:38
[INFO] [stdout]     |
[INFO] [stdout] 855 |     if let KVPairIterator::Ascending(mut values) = iterator {
[INFO] [stdout]     |                                      ----^^^^^^
[INFO] [stdout]     |                                      |
[INFO] [stdout]     |                                      help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:866:9
[INFO] [stdout]     |
[INFO] [stdout] 866 |     let mut iterator = map.values(Some(&3000), false);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 22 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:894:9
[INFO] [stdout]     |
[INFO] [stdout] 894 |     let mut iterator = map.values(None, true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:925:9
[INFO] [stdout]     |
[INFO] [stdout] 925 |     let mut iterator = map.values(Some(&0), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:950:9
[INFO] [stdout]     |
[INFO] [stdout] 950 |     let mut iterator = map.values(Some(&700), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:981:9
[INFO] [stdout]     |
[INFO] [stdout] 981 |     let mut iterator = map.values(Some(&999), true);
[INFO] [stdout]     |         ----^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:982:39
[INFO] [stdout]     |
[INFO] [stdout] 982 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]     |                                       ----^^^^^^
[INFO] [stdout]     |                                       |
[INFO] [stdout]     |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1023:9
[INFO] [stdout]      |
[INFO] [stdout] 1023 |     let mut iterator = map.values(Some(&-1), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1029:9
[INFO] [stdout]      |
[INFO] [stdout] 1029 |     let mut iterator = map.values(Some(&1500), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1030:39
[INFO] [stdout]      |
[INFO] [stdout] 1030 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]      |                                       ----^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1041:9
[INFO] [stdout]      |
[INFO] [stdout] 1041 |     let mut iterator = map.values(Some(&3000), true);
[INFO] [stdout]      |         ----^^^^^^^^
[INFO] [stdout]      |         |
[INFO] [stdout]      |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> tests/test_b_plus_tree.rs:1042:39
[INFO] [stdout]      |
[INFO] [stdout] 1042 |     if let KVPairIterator::Descending(mut values) = iterator {
[INFO] [stdout]      |                                       ----^^^^^^
[INFO] [stdout]      |                                       |
[INFO] [stdout]      |                                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:317:13
[INFO] [stdout]     |
[INFO] [stdout] 317 |             map.upsert(index, index * 1000, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 317 |             let _ = map.upsert(index, index * 1000, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> tests/test_b_plus_tree.rs:355:13
[INFO] [stdout]     |
[INFO] [stdout] 355 |             map.upsert(index, index, None);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 355 |             let _ = map.upsert(index, index, None);
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 97 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:121:24
[INFO] [stdout]     |
[INFO] [stdout] 121 |     pub async fn build(mut self) -> Result<CommitLogger> {
[INFO] [stdout]     |                        ----^^^^
[INFO] [stdout]     |                        |
[INFO] [stdout]     |                        help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Buf`
[INFO] [stdout]  --> src/vpm/page_cache.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 | use bytes::{Buf, BufMut};
[INFO] [stdout]   |             ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:276:26
[INFO] [stdout]     |
[INFO] [stdout] 276 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:277:26
[INFO] [stdout]     |
[INFO] [stdout] 277 |                          value: V,
[INFO] [stdout]     |                          ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:278:26
[INFO] [stdout]     |
[INFO] [stdout] 278 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `key`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:319:26
[INFO] [stdout]     |
[INFO] [stdout] 319 |                          key: K,
[INFO] [stdout]     |                          ^^^ help: if this is intentional, prefix it with an underscore: `_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `timeout`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:320:26
[INFO] [stdout]     |
[INFO] [stdout] 320 |                          timeout: Option<u128>) -> Result<Option<V>, (K, V)> {
[INFO] [stdout]     |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `current_raw` is never read
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:440:13
[INFO] [stdout]     |
[INFO] [stdout] 440 |             current_raw = current.load(AtomicOrdering::Acquire);
[INFO] [stdout]     |             ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:395:9
[INFO] [stdout]     |
[INFO] [stdout] 395 |     let mut new_raw = Arc::into_raw(new) as *mut Node<K, V>;
[INFO] [stdout]     |         ----^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:597:9
[INFO] [stdout]     |
[INFO] [stdout] 597 |     let mut index = node.index(key);
[INFO] [stdout]     |         ----^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:679:43
[INFO] [stdout]     |
[INFO] [stdout] 679 |             while let Some((Node::NonLeaf(mut non_leaf), _)) = stack.pop() {
[INFO] [stdout]     |                                           ----^^^^^^^^
[INFO] [stdout]     |                                           |
[INFO] [stdout]     |                                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:723:25
[INFO] [stdout]     |
[INFO] [stdout] 723 |                         mut leaf: Arc<Leaf<K, V>>) -> Arc<Leaf<K, V>>
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:798:29
[INFO] [stdout]     |
[INFO] [stdout] 798 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>) -> Arc<NonLeaf<K, V>>
[INFO] [stdout]     |                       ----^^^^^^^^
[INFO] [stdout]     |                       |
[INFO] [stdout]     |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `superior_child_index`
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:62
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                                              ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_superior_child_index`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:936:47
[INFO] [stdout]     |
[INFO] [stdout] 936 |                 while let Some((Node::NonLeaf(mut non_leaf), superior_child_index)) = nodes.pop() {
[INFO] [stdout]     |                                               ----^^^^^^^^
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:974:25
[INFO] [stdout]     |
[INFO] [stdout] 974 |                         mut leaf: Arc<Leaf<K, V>>,
[INFO] [stdout]     |                         ----^^^^
[INFO] [stdout]     |                         |
[INFO] [stdout]     |                         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1168:29
[INFO] [stdout]      |
[INFO] [stdout] 1168 | ...                   mut non_leaf: Arc<NonLeaf<K, V>>,
[INFO] [stdout]      |                       ----^^^^^^^^
[INFO] [stdout]      |                       |
[INFO] [stdout]      |                       help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1183:27
[INFO] [stdout]      |
[INFO] [stdout] 1183 |     if let (Node::NonLeaf(mut superior_non_leaf), superior_child_index) = stack.pop().unwrap() {
[INFO] [stdout]      |                           ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |                           |
[INFO] [stdout]      |                           help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:775:41
[INFO] [stdout]     |
[INFO] [stdout] 725 |             unsafe {
[INFO] [stdout]     |             ------ because it's nested under this `unsafe` block
[INFO] [stdout] ...
[INFO] [stdout] 775 |                                         unsafe {
[INFO] [stdout]     |                                         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_unsafe)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:935:28
[INFO] [stdout]     |
[INFO] [stdout] 935 |         let readable_len = unsafe { (&*readable_box).len() };
[INFO] [stdout]     |                            ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]    --> src/log_store/log_file.rs:944:34
[INFO] [stdout]     |
[INFO] [stdout] 944 |         let last_readable_path = unsafe { &(&*readable_box)[readable_len - 1] };
[INFO] [stdout]     |                                  ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/vpm/page_cache.rs:453:105
[INFO] [stdout]     |
[INFO] [stdout] 453 | ...                   |keys: &mut Vec<u128>, key: &u128, val: &SharedPageBuffer<C, O, B, D, P>, time: u64| {
[INFO] [stdout]     |                                                                                                 ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:302:26
[INFO] [stdout]     |
[INFO] [stdout] 302 |     pub fn append(&self, mut delta: D) {
[INFO] [stdout]     |                          ----^^^^^
[INFO] [stdout]     |                          |
[INFO] [stdout]     |                          help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/vpm/mod.rs:332:29
[INFO] [stdout]     |
[INFO] [stdout] 332 |     pub fn follow_up(&self, mut delta: D) {
[INFO] [stdout]     |                             ----^^^^^
[INFO] [stdout]     |                             |
[INFO] [stdout]     |                             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:141:31
[INFO] [stdout]     |
[INFO] [stdout] 141 |     fn put<T: Buf>(&mut self, mut src: T) {
[INFO] [stdout]     |                               ----^^^
[INFO] [stdout]     |                               |
[INFO] [stdout]     |                               help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/devices/simple_device.rs:433:17
[INFO] [stdout]     |
[INFO] [stdout] 433 |             let mut hasher = Hasher::new();
[INFO] [stdout]     |                 ----^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:212:13
[INFO] [stdout]     |
[INFO] [stdout] 212 |         let mut logger = self.clone();
[INFO] [stdout]     |             ----^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:331:17
[INFO] [stdout]     |
[INFO] [stdout] 331 |             let mut only_read_paths = commit_logger.0.file.all_readable_path();
[INFO] [stdout]     |                 ----^^^^^^^^^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/commit_logger.rs:298:34
[INFO] [stdout]     |
[INFO] [stdout] 298 |     fn start_replay<B, F>(&self, mut callback: Arc<F>) -> BoxFuture<'static, Result<(usize, usize)>>
[INFO] [stdout]     |                                  ----^^^^^^^^
[INFO] [stdout]     |                                  |
[INFO] [stdout]     |                                  help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_non_leaf` and `into_non_leaf` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1489:8
[INFO] [stdout]      |
[INFO] [stdout] 1473 | / impl<
[INFO] [stdout] 1474 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1475 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1476 | | > Node<K, V> {
[INFO] [stdout]      | |____________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1489 |       fn is_non_leaf(&self) -> bool {
[INFO] [stdout]      |          ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1544 |       fn into_non_leaf(self) -> Option<Arc<NonLeaf<K, V>>> {
[INFO] [stdout]      |          ^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `page` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1561:5
[INFO] [stdout]      |
[INFO] [stdout] 1555 | struct Leaf<
[INFO] [stdout]      |        ---- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1561 |     page:   Option<PageId>,                 //叶节点的逻辑页，非空表示叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `Leaf` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `prev` and `next` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1770:5
[INFO] [stdout]      |
[INFO] [stdout] 1769 | struct LogicChildPage {
[INFO] [stdout]      |        -------------- fields in this struct
[INFO] [stdout] 1770 |     prev:   PageId,    //前趋逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1771 |     next:   PageId,    //后继逻辑页唯一id
[INFO] [stdout]      |     ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `LogicChildPage` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `min_key` and `max_key` are never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1832:8
[INFO] [stdout]      |
[INFO] [stdout] 1784 | / impl<
[INFO] [stdout] 1785 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 1786 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 1787 | | > NonLeaf<K, V> {
[INFO] [stdout]      | |_______________- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1832 |       fn min_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1842 |       fn max_key<'a>(&'a self) -> Option<&'a K> {
[INFO] [stdout]      |          ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `page` and `childs` are never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:1984:5
[INFO] [stdout]      |
[INFO] [stdout] 1977 | struct KeyChildPair<
[INFO] [stdout]      |        ------------ fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1984 |     page:   Option<PageId>,         //非叶节点的逻辑页，非空表示非叶节点需要持久化
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 1985 |     childs: Option<LogicChildPage>, //非叶节点的逻辑子节点叶
[INFO] [stdout]      |     ^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `KeyChildPair` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2057:5
[INFO] [stdout]      |
[INFO] [stdout] 2052 | pub struct KeyRefGuard<
[INFO] [stdout]      |            ----------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2057 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2081:5
[INFO] [stdout]      |
[INFO] [stdout] 2076 | pub struct ValueRefGuard<
[INFO] [stdout]      |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2081 |     root:   Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2153:5
[INFO] [stdout]      |
[INFO] [stdout] 2148 | pub struct KeyAscendingIterator<
[INFO] [stdout]      |            -------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2153 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2365:5
[INFO] [stdout]      |
[INFO] [stdout] 2360 | pub struct KeyDescendingIterator<
[INFO] [stdout]      |            --------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2365 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2630:5
[INFO] [stdout]      |
[INFO] [stdout] 2625 | pub struct KVPairAscendingIterator<
[INFO] [stdout]      |            ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2630 |     root:       Arc<Node<K, V>>,                    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:2840:5
[INFO] [stdout]      |
[INFO] [stdout] 2835 | pub struct KVPairDescendingIterator<
[INFO] [stdout]      |            ------------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 2840 |     root:       Arc<Node<K, V>>,                //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `root` is never read
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3106:5
[INFO] [stdout]      |
[INFO] [stdout] 3101 | pub struct ManualCommit<
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 3106 |     root:       Arc<Node<K, V>>,    //根节点的共享引用
[INFO] [stdout]      |     ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]     --> src/free_lock/b_plus_tree.rs:3125:8
[INFO] [stdout]      |
[INFO] [stdout] 3120 | / impl<
[INFO] [stdout] 3121 | |     K: Ord + Debug + Clone + Send + 'static,
[INFO] [stdout] 3122 | |     V: Debug + Clone + Send + 'static,
[INFO] [stdout] 3123 | | > ManualCommit<K, V> {
[INFO] [stdout]      | |____________________- associated function in this implementation
[INFO] [stdout] 3124 |       // 构建手动提交对树的修改
[INFO] [stdout] 3125 |       fn new(tree: CowBtreeMap<K, V>,
[INFO] [stdout]      |          ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_MERGE_LOG_BUF_SIZE` is never used
[INFO] [stdout]   --> src/log_store/log_file.rs:86:7
[INFO] [stdout]    |
[INFO] [stdout] 86 | const DEFAULT_MERGE_LOG_BUF_SIZE: usize  = 1024;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_old` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1376:4
[INFO] [stdout]      |
[INFO] [stdout] 1376 | fn is_old<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_collectable` is never used
[INFO] [stdout]     --> src/log_store/log_file.rs:1388:4
[INFO] [stdout]      |
[INFO] [stdout] 1388 | fn is_collectable<P: AsRef<Path>>(path: P) -> bool {
[INFO] [stdout]      |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VIRTUAL_PAGE_MANAGER_DEVICES_INDEX` is never used
[INFO] [stdout]   --> src/vpm/mod.rs:25:7
[INFO] [stdout]    |
[INFO] [stdout] 25 | const VIRTUAL_PAGE_MANAGER_DEVICES_INDEX: u8 = 0;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DEFAULT_PAGE_DELTAS_SIZE_LIMIT` is never used
[INFO] [stdout]   --> src/vpm/page_manager.rs:56:7
[INFO] [stdout]    |
[INFO] [stdout] 56 | const DEFAULT_PAGE_DELTAS_SIZE_LIMIT: usize = 4096;
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `sync_interval` is never read
[INFO] [stdout]     --> src/vpm/page_manager.rs:1077:5
[INFO] [stdout]      |
[INFO] [stdout] 1050 | struct InnerVirtualPageManager<
[INFO] [stdout]      |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 1077 |     sync_interval:      usize,
[INFO] [stdout]      |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `rt` is never read
[INFO] [stdout]    --> src/vpm/page_pool.rs:328:5
[INFO] [stdout]     |
[INFO] [stdout] 319 | struct InnerVirtualPageBufPool<
[INFO] [stdout]     |        ----------------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 328 |     rt:         MultiTaskRuntime<()>,                   //运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `rt` and `delay_timeout` are never read
[INFO] [stdout]    --> src/vpm/page_table.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 307 | struct InnerVirtualPageTable {
[INFO] [stdout]     |        --------------------- fields in this struct
[INFO] [stdout] 308 |     rt:                 MultiTaskRuntime<()>,       //异步运行时
[INFO] [stdout]     |     ^^
[INFO] [stdout] ...
[INFO] [stdout] 311 |     delay_timeout:      usize,                      //延迟刷新虚拟页表的时间，单位毫秒
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]    --> src/devices/mod.rs:152:5
[INFO] [stdout]     |
[INFO] [stdout] 151 | pub struct DeviceStatistics {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 152 |     alloc_blocks:       u128,           //累计分配块数量
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 153 |     alloc_bytes:        u128,           //累计分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 154 |     free_blocks:        u128,           //累计释放块数量
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 155 |     free_bytes:         u128,           //累计释放大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 156 |     blocks_in:          u128,           //累计输入块数量
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 157 |     blocks_out:         u128,           //累计输出块数量
[INFO] [stdout]     |     ^^^^^^^^^^
[INFO] [stdout] 158 |     bytes_in:           u128,           //累计输入大小，单位B
[INFO] [stdout]     |     ^^^^^^^^
[INFO] [stdout] 159 |     bytes_out:          u128,           //累计输出大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^
[INFO] [stdout] 160 |     time:               u128,           //块设备本次运行时长，单位ms
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 161 |     slow_alloc_count:   Option<u64>,    //块设备慢分配次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 162 |     slow_free_count:    Option<u64>,    //块设备慢释放次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 163 |     slow_in_count:      Option<u64>,    //块设备慢输入次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 164 |     slow_out_count:     Option<u64>,    //块设备慢输出次数
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 165 |     min_alloc_bytes:    Option<u64>,    //最小分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 166 |     max_alloc_bytes:    Option<u64>,    //最大分配大小，单位B
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 167 |     min_alloc_time:     Option<u64>,    //最小分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 168 |     max_alloc_time:     Option<u64>,    //最大分配时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^^
[INFO] [stdout] 169 |     min_free_time:      Option<u64>,    //最小释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 170 |     max_free_time:      Option<u64>,    //最大释放时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout] 171 |     min_in_time:        Option<u64>,    //最小输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 172 |     max_in_time:        Option<u64>,    //最大输入时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 173 |     min_out_time:       Option<u64>,    //最小输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 174 |     max_out_time:       Option<u64>,    //最大输出时长，单位ms
[INFO] [stdout]     |     ^^^^^^^^^^^^
[INFO] [stdout] 175 |     soft_faults:        Option<u64>,    //软故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 176 |     hard_faults:        Option<u64>,    //硬故障次数
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]   --> src/free_lock/b_plus_tree.rs:67:13
[INFO] [stdout]    |
[INFO] [stdout] 67 |             map.upsert(key, value, None);
[INFO] [stdout]    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]    = note: `#[warn(unused_must_use)]` on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]    |
[INFO] [stdout] 67 |             let _ = map.upsert(key, value, None);
[INFO] [stdout]    |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:736:5
[INFO] [stdout]     |
[INFO] [stdout] 736 |     drop(leaf_mut); //对当前叶节点的修改已完成，则立即释放当前叶节点的可写引用
[INFO] [stdout]     |     ^^^^^--------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut Leaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout]     = note: `#[warn(dropping_references)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: calls to `std::mem::drop` with a reference instead of an owned value does nothing
[INFO] [stdout]    --> src/free_lock/b_plus_tree.rs:813:5
[INFO] [stdout]     |
[INFO] [stdout] 813 |     drop(non_leaf_mut); //对当前非叶节点的修改已完成，则立即释放当前非叶节点的可写引用
[INFO] [stdout]     |     ^^^^^------------^
[INFO] [stdout]     |          |
[INFO] [stdout]     |          argument has type `&mut NonLeaf<K, V>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: use `let _ = ...` to ignore the expression or result
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1151:57
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                         ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout]      = note: `#[warn(non_fmt_panics)]` on by default
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                            +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1151 |                 panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                        +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: panic message contains unused formatting placeholders
[INFO] [stdout]     --> src/vpm/page_manager.rs:1180:61
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                                                             ^^^^          ^^        ^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: this message is not used as a format string when given without arguments, but will be in Rust 2021
[INFO] [stdout] help: add the missing arguments
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space", ...);
[INFO] [stdout]      |                                                                                                                +++++
[INFO] [stdout] help: or add a "{}" format string to use the message literally
[INFO] [stdout]      |
[INFO] [stdout] 1180 |                     panic!("{}", "Commit alloced failed, page_id: {:?}, device: {}, size: {:?}, reason: out of space");
[INFO] [stdout]      |                            +++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/commit_logger.rs:502:9
[INFO] [stdout]     |
[INFO] [stdout] 502 |         new_check_point(&logger, false).await;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 502 |         let _ = new_check_point(&logger, false).await;
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: 95 warnings emitted
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] running `Command { std: "docker" "inspect" "b5a938277fb59d3dfa4e998d94eaab75d1d34b426c2f2255c53e94a71dea914a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "b5a938277fb59d3dfa4e998d94eaab75d1d34b426c2f2255c53e94a71dea914a", kill_on_drop: false }`
[INFO] [stdout] b5a938277fb59d3dfa4e998d94eaab75d1d34b426c2f2255c53e94a71dea914a
